当谈论到导入时,Rustacean 们偶尔会使用“prelude”这个词。
他们所谈论的这个“prelude”是什么呢?
它如何影响我的 Rust 程序?
当谈论到导入时,Rustacean 们偶尔会使用“prelude”这个词。
他们所谈论的这个“prelude”是什么呢?
它如何影响我的 Rust 程序?
use
指令导入当前作用域内的符号: use std::mem;
- 使用其绝对路径引用符号:std::mem::replace
然而,极少数符号可以在不执行这些操作的情况下使用,例如Option
或Copy
!extern crate std;
- 在每个模块中,编译器注入一个隐式的use std::prelude::v1::*;
(目前)
std::prelude::v1
是一个常规模块,它使用 pub use ...
语法重新导出那些经常使用的符号。其确切内容可以在这里找到。
prelude
模块,您可以使用相同的全局导入语法进行导入:use xxx::prelude::*;
。但与std::prelude
不同,它们不是编译器特殊处理的对象,因此需要显式导入。
std
crate(例如在嵌入式开发中),则需要决定将哪些内容放入他们自己的 std::prelude::v1
模块中。
vec!
,panic!
写答案,但找不到它们来自哪里。我会把它删除。 - Matthieu M.println!
宏不是来自std::prelude
? - Jeremy Kaoprintln
) - Matthieu M.