Rust从入门到实战系列七十一:嵌套路径来消除大量的 use 行

当需要引入很多定义于相同包或相同模块的项时,为每一项单独列出一行会占用源码很大的空间。

// --snip--
use std::cmp::Ordering;
use std::io;
// --snip--
#
# fn main() {
# println!("Guess the number!");
#
# let secret_number = rand::thread_rng().gen_range(1..101);
#
# println!("The secret number is: {}", secret_number);
#
# println!("Please input your guess.");
#
# let mut guess = String::new();
#
# io::stdin()
# .read_line(&mut guess)
# .expect("Failed to read line");
#
# println!("You guessed: {}", guess);
#
# match guess.cmp(&secret_number) {
# Ordering::Less => println!("Too small!"),
# Ordering::Greater => println!("Too big!"),
# Ordering::Equal => println!("You win!"),
# }
# }

相反,我们可以使用嵌套路径将相同的项在一行中引入作用域。这么做需要指定路径的相同部分,接着是两个冒号,接着是大括号中的各自不同的路径部分.

// --snip--
use std::{cmp::Ordering, io};
// --snip--
#
# fn main() {

# println!("Guess the number!");
#
# let secret_number = rand::thread_rng().gen_range(1..101);
#
# println!("The secret number is: {}", secret_number);
#
# println!("Please input your guess.");
#
# let mut guess = String::new();
#
# io::stdin()
# .read_line(&mut guess)
# .expect("Failed to read line");
#
# let guess: u32 = guess.trim().parse().expect("Please type a number!");
#
# println!("You guessed: {}", guess);
#
# match guess.cmp(&secret_number) {
# Ordering::Less => println!("Too small!"),
# Ordering::Greater => println!("Too big!"),
# Ordering::Equal => println!("You win!"),
# }
# }

在较大的程序中,使用嵌套路径从相同包或模块中引入很多项,可以显著减少所需的独立 use 语句的数量!
我们可以在路径的任何层级使用嵌套路径,这在组合两个共享子路径的 use 语句时非常有用。

use std::io::Write;

两个路径的相同部分是 std:: io,这正是第一个路径。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值