介绍
本书是 Rust 编程语言的主要参考资料。 它提供三种材料:
非正式地描述每种语言结构及其用法的章节。
非正式地描述内存模型、并发模型、运行时服务、链接模型和调试工具的章节。
附录章节提供了影响设计的语言的基本原理和参考。
警告: 本书不完整。记录所有内容需要一段时间。 请参阅 GitHub 问题,了解本书中未记录的内容。
锈迹释放
Rust 每六周发布一个新的语言版本。 该语言的第一个稳定版本是 Rust 1.0.0,其次是 Rust 1.1.0 等等。 工具(、等)和文档(标准库、本书等)随语言版本一起发布。rustccargo
本书的最新版本,与最新的 Rust 版本相匹配,总是可以在 https://doc.rust-lang.org/reference/ 找到。 以前的版本可以通过在“reference”目录之前添加 Rust 版本来找到。 例如,Rust 1.49.0 的参考位于 https://doc.rust-lang.org/1.49.0/reference/。
参考不是什么
本书不作为该语言的介绍。 假定对语言的背景熟悉。 有一本单独的书可以帮助获得这种背景熟悉度。
本书也不作为语言发行版中包含的标准库的参考。 通过从源代码中提取文档属性,这些库将单独记录。 人们可能期望成为语言特性的许多功能都是 Rust 中的库功能,所以你正在寻找的东西可能在那里,而不是在这里。
同样,本书通常不会记录作为工具或货物的细节。 有自己的书。 Cargo有一本书,其中包含参考资料。 有一些页面,如链接,仍然描述了如何工作。rustcrustcrustc
本书也仅作为稳定版 Rust 中可用内容的参考。 有关正在处理的不稳定功能,请参阅不稳定手册。
Rust 编译器(包括 )将执行优化。 该参考未指定允许或不允许哪些优化。 相反,将编译的程序视为一个黑匣子。 您只能通过运行它、为其提供输入并观察其输出来探测。 以这种方式发生的一切都必须符合参考文献所说的。rustc
最后,这本书不是规范性的。 它可能包含特定于自身的详细信息,不应被视为 Rust 语言的规范。 我们打算有一天出版这样一本书,在那之前,参考是我们最接近的东西。rustc
如何使用本书
本书并不假定您按顺序阅读本书。 每一章通常可以独立阅读,但会交叉链接到其他章节,以了解它们所指语言的各个方面,但不讨论。
阅读本文档有两种主要方法。
首先是回答一个具体的问题。 如果您知道哪一章回答了这个问题,则可以跳到目录中的该章节。 否则,您可以按或单击顶部栏上的放大镜来搜索与您的问题相关的关键字。 例如,假设您想知道何时删除在 let 语句中创建的临时值。 如果您还不知道表达式章节中定义了临时的生存期,则可以搜索“临时让”,第一个搜索结果将带您进入该部分。s
第二个是总体上提高你对语言某个方面的知识。 在这种情况下,只需浏览目录,直到看到想要了解更多信息的内容,然后开始阅读。 如果某个链接看起来很有趣,请单击它,然后阅读有关该部分的信息。
也就是说,阅读这本书没有错。以您认为对您最有帮助的方式阅读它。
约定
像所有技术书籍一样,本书在如何显示信息方面有一定的约定。 此处记录了这些约定。
- 定义术语的语句以斜体包含该术语。 每当该术语在该章之外使用时,它通常是指向具有此定义的部分的链接。
- 示例术语是正在定义的术语的示例。
- 编译板条箱所使用的语言的差异在块引用中,该引用以粗体的“版本差异:”开头。
- >版本差异:在 2015 版中,此语法有效,自 2018 版起是不允许的。
- 包含有关书籍状态的有用信息或指出有用但大多超出范围的注释位于以粗体单词“Note:”开头的块引号中。
- 注意:这是一个示例注释。
- 显示语言中不合理行为或语言功能可能令人困惑的交互的警告位于特殊警告框中。
- 警告:这是一个示例警告。
- 文本中内联的代码片段位于标记内。<code>
- 较长的代码示例位于语法突出显示框中,该框在右上角具有用于复制、执行和显示隐藏行的控件。
```
fn main() {
println!("This is a code example");
}
```
除非另有说明,否则所有示例均为最新版本。
- 语法和词汇结构在块引用中,“Lexer”或“Syntax”以粗体上标作为第一行。
>Syntax
ExampleGrammar:
Expression
| Expression~box
- 有关更多详细信息,请参阅表示法。
贡献
我们欢迎各种贡献。
你可以通过打开一个问题或向 Rust 参考仓库发送拉取请求来为本书做出贡献。 如果这本书没有回答你的问题,而你认为它的答案在它的范围内,请不要犹豫,在Zulip的流中提出问题或询问它。 了解人们最常使用这本书的原因有助于引导我们的注意力,使这些部分成为最好的部分。 我们还希望参考文献尽可能规范,因此,如果您发现任何错误或非规范性但未明确指出的内容,也请提交问题。t-lang/doc