【发布时间】:2016-04-03 11:27:53
【问题描述】:
在谈到进口时,prelude 这个词经常被 rustaceans 使用。
他们谈论的前奏曲是什么?
它对我的 Rust 程序有何影响?
【问题讨论】:
标签: rust
在谈到进口时,prelude 这个词经常被 rustaceans 使用。
他们谈论的前奏曲是什么?
它对我的 Rust 程序有何影响?
【问题讨论】:
标签: rust
在 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 模块,您可以使用相同的全局导入语法来导入它:use xxx::prelude::*;。与 std::prelude 不同,但它们不是编译器的特殊情况,因此需要显式导入。
编译器对前奏曲的确切内容是不可知的,因此如果要用他们自己的替换std crate(例如,在嵌入式开发中),那么人们将决定他们的std::prelude::v1 模块中的内容。
【讨论】:
vec!、panic! 写答案……但找不到这些答案的来源。我会删除它。
println! 宏好像不是来自std::prelude?
println)