Appearance
1.4 Prelude
Rust 的代码从逻辑上是分 crate 和 mod 管理的。所谓 crate 大家可以理解为“项目”。 每个 crate 是一个完整的编译单元,它可以生成为一个 lib 或者 exe 可执行文件。而在 crate 内部,则是由 mod 这个概念管理的,所谓 mod 大家可以理解为 namespace。
我们可以使用 use 语句把其他模块中的内容引入到当前模块中来。关于 Rust 模块系统的详细说明,可参见本书第五部分。
Rust 有一个极简标准库,叫作 std,除了极少数嵌入式系统下无法使用标准库之外,绝大部分情况下,我们都需要用到标准库里面的东西。为了给大家减少麻烦,Rust 编译器对标准库有特殊处理。默认情况下,用户不需要手动添加对标准库的依赖,编译器会自动引入对标准库的依赖。 除此之外,标准库中的某些 type、trait、function、macro 等实在是太常用了。每次都写 use 语句确实非常无聊,因此标准库提供了一个std::prelude
模块,在这个模块中导出了一些最常见的类型、trait 等东西,编译器会为用户写的每个 crate 自动插入一句话:
rust
use std::prelude::v1::*;
这样,标准库里面的这些最重要的类型、trait 等名字就可以直接使用,而无须每次都写全称或者 use 语句。
Prelude 模块的源码在/src/std/prelude/文件夹下。我们可以看到,目前的mod.rs
中,直接导出了v1
模块中的内容,而v1.rs
中,则是编译器为我们自动导入的相关 trait 和类型。