Rust中将传统的lib或者库称为 crate, 通常的包称为模块(module), 使用use关键字引用crate中内容。
use std::env;
Rust默认有Prelude模块,预先加载了std标准库内容,所以对于Result,Vec等我们不需要手动引入就可以直接使用。
模块(module)
使用mod关键字来声明,内部可以放任何Rust代码,默认为private,外部不可见,如果外部可见需要pub用修饰。
mod hello {
pub say_hello() {
println!("hello world");
}
}
通常在目录下放置xx/mod.rs将模块声明在其中
pub mod aa;
pub mod bb;
如上将mod.rs同级目录下的xx/aa.rs和xx/bb.rs声明为模块,此处mod aa;相当于mod aa {}。外部使用时,再声明模块xx
mod xx;
然后就可以通过use xx::aa::*;引入使用aa中的公有方法。
Rust 的多层模块查找规则:
- 优先在当前层级查找
aa.rs文件
1)main.rs、lib.rs、mod.rs中的mod aa;默认优先查找同级目录下的 aa.rs 文件;
2)其他文件bb.rs中的mod aa;默认优先查找bb同级目录下的 aa.rs 文件; - 如果 aa.rs 不存在,则查找 aa/mod.rs 文件,即 aa 目录下的 mod.rs 文件。