Rust开发之——use关键字(22)

一 概述

  • use关键字的核心功能
  • use的常用语法与技巧
  • use与路径的关系
  • use的最佳实践

二 use关键字的核心功能

2.1 导入路径到作用域

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1、概念
通过use将模块项的路径引入当前作用域,避免每次调用时重复书写完整路径。

2、示例:

// 导入绝对路径
use crate::front_of_house::hosting;
fn eat_at_restaurant() {
hosting::add_to_waitlist();
hosting::seat_at_table();
}


3、等价于:
直接使用完整路径crate::front_of_house::hosting::add_to_waitlist()。

2.2 导入具体项

1
2
3
4
5
6
1、概念
精确导入模块中的函数、结构体等项:

2、示例
use crate::front_of_house::hosting::add_to_waitlist;
fn eat_at_restaurant() { add_to_waitlist(); } // 直接调用

三 use的常用语法与技巧

3.1 使用as重命名导入项

1
2
3
4
5
6
7
1、作用
解决命名冲突:

2、示例
use std::fmt::Result;
use std::io::Result as IoResult; // 重命名为IoResult
fn function() -> IoResult<()> { ... }

3.2 通配符*导入所有项

1
2
3
4
5
1、概念
导入模块中所有公有项(不推荐用于库代码,可能导致命名冲突):

2、示例
use std::collections::*; // 导入collections模块的所有公有项

3.3 在模块定义中使用use

1
2
3
4
5
6
7
8
1、概念
在mod块内导入路径,使子模块可直接使用:

2、示例
mod front_of_house {
use crate::back_of_house::chef; // 子模块可访问chef函数
// 其他代码...
}

四 use与路径的关系

1
2
-导入的本质:use仅影响代码中引用项的语法,不改变项在模块树中的实际路径。
-私有性限制:导入的路径必须可访问(如项需标记pub),否则编译报错。

五 use的最佳实践

5.1 绝对路径与相对路径的选择

1
2
库代码推荐使用绝对路径(以crate开头),保证代码移动时的稳定性。
二进制项目可混合使用相对路径(如super),提升模块内调用的简洁性。

5.2 导入层级的选择

1
2
导入模块层级(如use crate::front_of_house::hosting)后,
通过hosting::add_to_waitlist调用,避免一次性导入过多具体项。

5.3 use的位置

1
2
3
4
5
6
7
1、概念
通常放在文件顶部或模块开头,保持代码清晰:

2、示例
use std::io;
use std::io::Write;
fn main() { ... }

六 参考

  • Rust中文官网——使用 use 关键字将名称引入作用域