Refining Ch07.

This commit is contained in:
rust-lang.xfoss.com 2023-12-19 17:00:30 +08:00
parent 3519e4b7ef
commit a1209bc6f3

View File

@ -1,14 +1,13 @@
# 代码包与代码箱
# 包与代码箱
**Packages and Crates**
这里将讲到的 Rust 模组系统的头几个部分,即为代码包与代码箱。
我们要介绍的模块系统的头两个部分,是包与代码箱。
*代码箱crate* 是 Rust 编译器一次要考虑的最小代码量。即使咱们运行的是 `rustc` 而不是 `cargo`,并只传递了一个源代码文件(就像我们在第 1 章 “编写和运行 Rust 程序” 小节中所做的那样),编译器也会将该文件,视为一个代码箱。代码箱可以包含模组,模组也可以定义在与该代码箱一起编译的其他文件中,正如我们将在接下来的小节中看到的那样。
*代码箱a crate* 是 Rust 编译器一次识别到的最低数量的代码a *crate* is the smallest amount of code that the Rust compiler considers as a time。即使运行 `rustc` 而非 `cargo`,并传递单个源码文件(就如同在第 1 章 [“编写并运行一个 Rust 程序”](Ch01_Getting_Started.md#hello-world) 小节中曾干过的),编译器也会将那个文件,视为一个代码箱。代码箱可以包含一些模组,而这些模组则会被定义在其他的、与该代码箱一同被编译的一些文件中,就如同在接下来的小节中将看到的那样。
代码箱有着两种形式二进制代码箱a binary crate或库代码箱(a library crate)。*二进制代码箱binary crates* 是一些可编译为能够运行的可执行程序的一些程序,譬如命令行程序或服务器。二进制代码箱必须有着一个叫做 `main` 的、定义了在可执行文件运行时所发生事情的函数。到目前为止本书中创建的全部代码箱,都是二进制代码箱。
代码箱有两种形式:二进制代码箱或库代码箱。*二进制板条箱binary creates* 属于可以编译成咱们可以运行的可执行文件的程序,例如命令行程序或服务器。每个二进制代码箱,都必须有个名为 `main` 的函数,定义出可执行文件运行时会发生什么。到目前为止,我们创建的所有代码箱,都是二进制代码箱。
*库代码箱* 是没有 `main` 函数的,且他们不会编译到可执行文件。相反,他们定义的是计划在多个项目下共用的功能。比如在 [第二章](Ch02_Programming_a_Guessing_Game.md#生成随机数) 中用到的 `rand` 代码箱,就提供了生成随机数的功能。在多数时候当 Rust 公民提到 “代码箱crate” 时,他们指的就是库代码箱,并且他们将 “代码箱crate” 与一般编程概念中的 “库library” 互换使用。