Expand description
Rust Prelude
Rust 在其标准库中附带了许多东西。但是,如果您必须手动导入所用的每件事,那将非常冗长。 但是,导入很多程序从未使用过的东西也是不好的。 需要取得平衡。
prelude 是 Rust 自动导入每个 Rust 程序的内容的列表。 它保持尽可能的小,并专注于几乎在每个 Rust 程序中使用的东西,尤其是 traits。
其他 preludes
preludes 可以看作是一种模式,使使用多种类型更加方便。
这样,您将在标准库中找到其他 preludes,例如 std::io::prelude
。Rust 生态系统中的各种库也可以定义自己的 preludes。
prelude
和其他 preludes 之间的区别是它们不会自动 use
,而必须手动导入。
这仍然比导入其所有组成组件容易。
Prelude 的内容
prelude 的第一个版本用于 Rust 2015 和 Rust 2018,并存在于 std::prelude::v1
中。
std::prelude::rust_2015
和 std::prelude::rust_2018
重导出这个 prelude。
它重导出以下内容:
-
std::marker::{Copy, Send, Sized, Sync, Unpin}
,指示类型基本属性的标记 traits。 -
std::boxed::Box
,一种在堆上分配值的方法。 -
std::borrow::ToOwned
,定义to_owned
的转换 trait,泛型从借用类型创建拥有所有权的类型的方法。 -
std::clone::Clone
,无处不在的 trait 定义了clone
,生成值的副本的方法。 -
std::cmp::{PartialEq, PartialOrd, Eq, Ord}
,比较 traits,实现比较一致,经常在 trait bounds 中看到。 -
std::convert::{AsRef, AsMut, Into, From}
,泛型转换,由精明的 API 作者用来创建重载方法。 -
std::default::Default
,具有默认值的类型。 -
std::iter::{Iterator, Extend, IntoIterator, DoubleEndedIterator, ExactSizeIterator}
,各种迭代器。 -
std::option::Option::{self, Some, None}
,一种表示值存在与否的类型。 这种类型非常常用,它的变体也被导出。 -
std::result::Result::{self, Ok, Err}
,一种可能成功或失败的函数类型。 像Option
一样,它的变体也被导出。 -
std::string::{String, ToString}
,堆分配的字符串。
Rust 2021 std::prelude::rust_2021
中使用的 prelude,包含了以上所有内容,另外还有重导出:
Modules
- rust_2024ExperimentalRust 标准库的 prelude 的 2024 版本。
- Rust 标准库的 prelude 的 2015 版本。
- Rust 标准库的 prelude 2018 版本。
- Rust 标准库的 prelude 的 2021 版本。
- Rust 标准库的 prelude 的第一个版本。