diff --git a/src/packages_crates_and_modules/packages_and_crates.md b/src/packages_crates_and_modules/packages_and_crates.md index f5f46a9..a9bb50f 100644 --- a/src/packages_crates_and_modules/packages_and_crates.md +++ b/src/packages_crates_and_modules/packages_and_crates.md @@ -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)” 互换使用。