From 86a112829476b1268a26e9c640e72d5aa7b3bc5c Mon Sep 17 00:00:00 2001 From: Unisko PENG Date: Mon, 24 Apr 2023 15:04:18 +0800 Subject: [PATCH] Update Ch14 --- src/Ch14_More_about_Cargo_and_Crates-io.md | 18 +++++++++--------- src/Ch21_Appendix.md | 10 ++++++++++ 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/src/Ch14_More_about_Cargo_and_Crates-io.md b/src/Ch14_More_about_Cargo_and_Crates-io.md index f4570e9..a804cb0 100644 --- a/src/Ch14_More_about_Cargo_and_Crates-io.md +++ b/src/Ch14_More_about_Cargo_and_Crates-io.md @@ -468,15 +468,15 @@ Caused by: 咱们完成咱们代码箱的修改,而准备好发布新版本时,咱们要修改 `Cargo.toml` 中所指定的 `version` 值并重新发布。请运用 [语义版本控制规则,Semantic Versioning rules](http://semver.org/),根据咱们已做出修改的类别,来确定出恰当的下一版本编号为何。然后运行 `cargo publish` 来上传新版本。 -### 使用 `cargo yank` 弃用 Crates.io 上的一些版本 +### 使用 `cargo yank` 命令弃用 Crates.io 上的版本 **Depracating Versions from Crates.io with `cargo yank`** -尽管咱们无法移除某个代码箱的一些先前版本,但咱可以阻止任何今后的项目,将他们添加作新的依赖项。在某个代码箱版本由于某种原因或别的问题而损坏时,这样做是有用的。在诸如此类的情形中,Cargo 是支持将某个代码箱版本 *抽出来* 的(in such situations, Cargo supports *yanking* a crate version)。 +尽管咱们无法移除代码箱的先前版本,但咱们可以阻止任何今后的项目,将其添加为新的依赖项。这在某个代码箱版本由于某种原因,或别的问题而损坏时是有用的。在诸如此类的情形下,Cargo 支持把某个代码箱版本 *抽出来*,in such situations, Cargo supports *yanking* a crate version。 -抽出某个版本,就会在允许所有依赖该版本的项目继续工作的同时,阻止新的项目依赖那个版本。本质上,一次版本抽出,就表示有着 `Cargo.lock` 的全部项目不会破坏,同时任何今后生成的 `Cargo.lock` 文件,都不会使用这个被抽出的版本了。 +抽出某个版本,在允许所有依赖该版本的既有项目继续工作的同时,会阻止新项目依赖那个版本。本质上,一次版本抽出,表示带有 `Cargo.lock` 的全部项目不会破坏,而任何今后生成的 `Cargo.lock` 文件,都将不使用被抽出的版本。 -要抽出代码箱的某个版本,就要在先前已发布的那个代码箱目录中,运行 `cargo yank` 并指定要抽出哪个版本。比如,在曾发布了一个名为 `guessing_game` 代码箱的 `0.1.0` 版本,并打算抽出他时,那么就要在 `guessing_game` 的项目目录下,运行下面的命令: +要抽出代码箱的某个版本,就要在咱们先前已发布的代码箱目录中,运行 `cargo yank` 并指定出要抽出的版本。比如,咱们曾发布了名为 `guessing_game` 代码箱的 `0.1.0` 版本,而打算抽出他,咱们就要在 `guessing_game` 的项目目录下,运行下面的命令: ```console $ cargo yank --vers 0.1.0 4s lennyp@vm-manjaro @@ -484,7 +484,7 @@ $ cargo yank --vers 0.1.0 Yank guessing_game-xfossdotcom@0.1.0 ``` -通过添加 `--undo` 到这个命令,咱们还可以撤销某次抽出,而运行一些项目再度开始依赖于某个版本: +通过把 `--undo` 添加到这个命令,咱们还可以撤销某次抽出,而允许项目开始再度依赖于某个版本: ```console $ cargo yank --vers 0.1.0 --undo lennyp@vm-manjaro @@ -492,20 +492,20 @@ $ cargo yank --vers 0.1.0 --undo Unyank guessing_game-xfossdotcom@0.1.0 ``` -抽出某个版本,*不会* 删除任何代码。比如,此操作就无法删除那些不小心上传的机密信息。若发生了机密信息被上传的情况,那么就必须立即重置这些机密信息。 +抽出版本,*不会* 删除任何代码。比如,其无法删除那些不小心上传的机密信息。若发生了机密信息被上传的情况,咱们必须立即重置这些机密信息。 ## Cargo 工作区 **Cargo Workspaces** -在第 12 章中,曾构建了包含一个二进制代码箱和一个库代码箱的包(a package)。随着项目的不可开发,就会发现那个库代码箱会持续变大,而咱们就会想要将咱们的包,进一步拆分为多个库代码箱。Cargo 提供了叫做 *工作区(workspace)* 的特性,可帮助管理多个先后开发的相关包。 +在第 12 章中,咱们曾构建了个包含二进制代码箱和库代码箱的包,a package。随着咱们项目的持续开发,咱们会发现库代码箱会持续变大,而咱们就会想要把咱们的包,进一步拆分为多个库代码箱。Cargo 提供了可帮助管理多个齐头并进开发的相关包,名为 *工作区,workspace* 的特性。 -> ***注***:总结 Rust 开发的层次结构如下:工作区(workspace) -> 包(package) -> 代码箱(crate) -> 模组(module) -> 语句(statement)。 +> 注:总结 Rust 开发的层次结构如下:工作区,workspace -> 包,package -> 代码箱,crate -> 模组,module -> 语句,statement。 ### 创建工作区 -*工作区*(a *workspace*)是共享了同一 `Cargo.lock` 文件及输出目录的一个包集合。下面就来构造一个用到工作区的项目 -- 这里将使用一些简单代码,这样咱们就可以着重于该工作区的结构上。组织工作区有多种方式,因此这里将只给出一种常用的方式。这里将有着包含一个二进制代码箱,及两个库代码箱的工作区。其中的二进制代码箱,将提供依赖于那两个库代码箱的 `main` 功能。其中一个库代码箱,将提供一个 `add_one` 函数,而另一个则会提供 `add_two` 函数。这三个代码箱,都将是同一工作区的组成部分。这里将以创建该工作区的目录开始: +*工作区,a workspace* 是共享了同一 `Cargo.lock` 文件及输出目录的一个包集合。下面就来构造一个用到工作区的项目 -- 这里将使用一些简单代码,这样咱们就可以着重于该工作区的结构上。组织工作区有多种方式,因此这里将只给出一种常用的方式。这里将有着包含一个二进制代码箱,及两个库代码箱的工作区。其中的二进制代码箱,将提供依赖于那两个库代码箱的 `main` 功能。其中一个库代码箱,将提供一个 `add_one` 函数,而另一个则会提供 `add_two` 函数。这三个代码箱,都将是同一工作区的组成部分。这里将以创建该工作区的目录开始: ```console $ mkdir add diff --git a/src/Ch21_Appendix.md b/src/Ch21_Appendix.md index cacd823..400af0b 100644 --- a/src/Ch21_Appendix.md +++ b/src/Ch21_Appendix.md @@ -796,6 +796,16 @@ Documentation comment, 将产生出 HTML 的注释。 Re-export, 使用 `pub use` 重新导出程序项目。 +- 语义版本控制规则 + +Semantic Versioning rules, 又大版本、小版本及补丁版本构成的,形如 `MAJOR.MINOR.PATCH` 的版本编号规则。参考:[semver.org](https://semver.org)。 + + +- 工作区 + +Workspace, + + - 单态化 所谓 *单态化,monomorphization*,是指即通过把在编译后用到的具体类型填入到泛型位置,而将通用代码转换为具体代码的过程。参考 [使用泛型代码的性能问题](Ch10_Generic_Types_Traits_and_Lifetimes.md#使用泛型参数代码的性能问题)。