在谈论导入时,生锈的人经常使用 prelude 这个词。
他们谈论的前奏是什么?
它如何影响我的Rust程序?
答案 0 :(得分:19)
在Rust中,为了使用符号,您必须:
use
指令在当前范围中导入了该符号:use std::mem;
std::mem::replace
但是,如果没有这些操作,可以使用一些非常少的符号:例如Option
或Copy
!
这是由于Rust prelude。
许多特征,类型和功能被认为是如此频繁使用,以至于不要求它们的使用需要每次都明确地输入必要的符号。这要归功于编译器采取的两个隐式操作:
extern crate std;
use std::prelude::v1::*;
(现在) std::prelude::v1
只是一个常规模块,它使用pub use ...
语法重新导出这些常用符号。它的确切内容可以找到here。
许多其他库,甚至标准库的子组件也定义了一个prelude
模块,您可以使用相同的glob导入语法导入该模块:use xxx::prelude::*;
。与std::prelude
不同,但编译器并不特殊,因此需要显式导入。
编译器对前奏的确切内容是不可知的,因此,如果要用自己的std
crate替换std::prelude::v1
crate(例如,在嵌入式开发中),则可以决定他们的{{1模块。