Rust 序曲是什么?

Rust 序曲是什么?,rust,Rust,当谈到进口时,rustaceans人经常使用prelude一词 他们谈论的前奏曲是什么 它如何影响我的Rust程序?在Rust中,要使用符号,必须: 已在当前范围内定义了符号 已通过use指令导入当前范围内的符号:use std::mem 使用符号的绝对路径引用符号:std::mem::replace 但是,如果不执行此类操作,则可以使用极少数符号:选项或复制 这是由于 许多特征、类型和功能被认为是如此频繁地使用,因此不要求每次都明确地输入必要的符号是有意义的。这要归功于编译器采取的两个隐式

当谈到进口时,rustaceans人经常使用prelude一词

他们谈论的前奏曲是什么


它如何影响我的Rust程序?

在Rust中,要使用符号,必须:

  • 已在当前范围内定义了符号
  • 已通过
    use
    指令导入当前范围内的符号:
    use std::mem
  • 使用符号的绝对路径引用符号:
    std::mem::replace
但是,如果不执行此类操作,则可以使用极少数符号:
选项
复制

这是由于

许多特征、类型和功能被认为是如此频繁地使用,因此不要求每次都明确地输入必要的符号是有意义的。这要归功于编译器采取的两个隐式操作:

  • 在每个板条箱的根处,编译器注入一个隐式
    extern板条箱std
  • 在每个模块中,编译器注入一个隐式
    use std::prelude::v1::*(目前)
std::prelude::v1
只是一个常规模块,它使用
pub use…
语法重新导出那些常用的符号。它的确切内容可以找到


许多其他库,甚至标准库的子组件也定义了一个
prelude
模块,您可以使用相同的glob导入语法导入该模块:
use xxx::prelude::*。但是,与std::prelude不同的是,它们不是编译器指定的特殊情况,因此需要显式导入



编译器对前奏曲的确切内容是不可知的,因此,如果要用自己的(例如,在嵌入式开发中)替换
std
板条箱,那么就要决定他们的
std::prelude::v1
模块中的内容。

@LukasKalbertodt:好的一点,我已经开始用
vec编写答案了
恐慌。。。但是找不到这些是从哪里来的。我把它取下来。建议向用户机箱添加前奏功能。它在一段时间前已经关闭了,但将来可能会重新启用。@MatthieuM。谢谢你的清楚解释。好像是
println宏不是来自
std::prelude
?@JeremyKao:是的,如果您转到“宏”部分中列出的。(只需按CTRL+F
println