Merge pull request #288 from spartucus/master

refactor translations
pull/289/head
KaiserY 6 years ago committed by GitHub
commit bf7fbf268f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -2,7 +2,7 @@
> [appendix-01-keywords.md](https://raw.githubusercontent.com/rust-lang/book/master/src/appendix-01-keywords.md)
> <br>
> commit 1fedfc4b96c2017f64ecfcf41a0a07e2e815f24f
> commit 0e9061cbaf95adfb9f3ed36c6cef4c046f282e86
下面的列表包含 Rust 中正在使用或者以后会用到的关键字。因此,这些关键字不能被用作标识符(除了 [原始标识符][raw-identifiers]这包括函数、变量、参数、结构体字段、模块、crate、常量、宏、静态值、属性、类型、trait 或生命周期
的名字。
@ -90,7 +90,7 @@ error: expected identifier, found keyword `match`
| ^^^^^ expected identifier, found keyword
```
可以通过原始标识符编写
该错误表示你不能将关键字`match`用作函数标识符。 你可以使用原始标识符将`match`作为函数名称使用
```rust
fn r#match(needle: &str, haystack: &str) -> bool {
@ -102,8 +102,6 @@ fn main() {
}
```
注意 `r#` 前缀需同时用于函数名和调用。
此代码编译没有任何错误。注意 `r#` 前缀需同时用于函数名和调用。
#### 动机
出于一些原因这个功能是实用的,不过其主要动机是解决跨版本问题。比如,`try` 在 2015 edition 中不是关键字,而在 2018 edition 则是。所以如果如果用 2015 edition 编写的库中带有 `try` 函数,在 2018 edition 中调用时就需要使用原始标识符。
原始标识符允许使用你选择的任何单词作为标识符,即使该单词恰好是保留关键字。 此外原始标识符允许你使用以不同于你的crate使用的Rust版本编写的库。比如`try` 在 2015 edition 中不是关键字,而在 2018 edition 则是。所以如果如果用 2015 edition 编写的库中带有 `try` 函数,在 2018 edition 中调用时就需要使用原始标识符。有关版本的更多信息,请参见[附录E](https://github.com/KaiserY/trpl-zh-cn/blob/master/src/appendix-05-editions.md).

@ -2,11 +2,11 @@
> [ch01-03-hello-cargo.md](https://github.com/rust-lang/book/blob/master/src/ch01-03-hello-cargo.md)
> <br>
> commit 1fedfc4b96c2017f64ecfcf41a0a07e2e815f24f
> commit 7ccf60ad3b85e06ad0a2cb7c422dc80c42ecc963
Cargo 是 Rust 的构建系统和包管理器。大多数 Rustacean 们使用 Cargo 来管理他们的 Rust 项目,因为它可以为你处理很多任务,比如构建代码、下载依赖库并编译这些库。(我们把代码所需要的库叫做 **依赖***dependencies*))。
最简单的 Rust 程序,比如我们刚刚编写的,没有任何依赖。所以如果使用 Cargo 来构建 Hello, world! 项目,将只会用到 Cargo 的构建代码那部分功能。如果编写更为复杂的 Rust 程序,你会添加依赖,这样如果你一开始就使用 Cargo 的话,添加依赖将会变得简单许多
最简单的 Rust 程序,比如我们刚刚编写的,没有任何依赖。所以如果使用 Cargo 来构建 Hello, world! 项目,将只会用到 Cargo 构建代码的那部分功能。在编写更复杂的Rust程序时你将添加依赖项如果使用Cargo启动项目则添加依赖项将更容易
由于绝大多数 Rust 项目使用 Cargo本书接下来的部分假设你也使用 Cargo。如果使用 “安装” 部分介绍的官方安装包的话,则自带了 Cargo。如果通过其他方式安装的话可以在终端输入如下命令检查是否安装了 Cargo
@ -27,7 +27,7 @@ $ cd hello_cargo
第一行命令新建了名为 *hello_cargo* 的目录。我们将项目命名为 *hello_cargo*,同时 Cargo 在一个同名目录中创建项目文件。
进入 *hello_cargo* 目录并列出文件。将会看到 Cargo 生成了两个文件和一个目录:一个 *Cargo.toml* 文件,一个 *src* 目录,以及位于 *src* 目录中 *main.rs* 文件。它也在 *hello_cargo* 目录初始化了一个 git 仓库,以及一个 *.gitignore* 文件。
进入 *hello_cargo* 目录并列出文件。将会看到 Cargo 生成了两个文件和一个目录:一个 *Cargo.toml* 文件,一个 *src* 目录,以及位于 *src* 目录中 *main.rs* 文件。它也在 *hello_cargo* 目录初始化了一个 git 仓库,以及一个 *.gitignore* 文件。
> 注意Git 是一个常用的版本控制系统version control system VCS。可以通过 `--vcs` 参数使 `cargo new` 切换到其它版本控制系统VCS或者不使用 VCS。运行 `cargo new --help` 参看可用的选项。
@ -53,7 +53,7 @@ edition = "2018"
第一行,`[package]`是一个片段section标题表明下面的语句用来配置一个包。随着我们在这个文件增加更多的信息还将增加其他片段section
接下来的四行设置了 Cargo 编译程序所需的配置:项目的名称、版本和作者。Cargo 从环境中获取你的名字和 email 信息,所以如果这些信息不正确,请修改并保存此文件。附录 E 会介绍 `edition` 的值。
接下来的四行设置了 Cargo 编译程序所需的配置:项目的名称、版本、作者以及要使用的Rust版本。Cargo 从环境中获取你的名字和 email 信息,所以如果这些信息不正确,请修改并保存此文件。附录 E 会介绍 `edition` 的值。
最后一行,`[dependencies]`,是罗列项目依赖的片段的开始。在 Rust 中,代码包被称为 *crates*。这个项目并不需要其他的 crate不过在第二章的第一个项目会用到依赖那时会用得上这个片段。

@ -2,40 +2,11 @@
> [ch03-00-common-programming-concepts.md](https://github.com/rust-lang/book/blob/master/src/ch03-00-common-programming-concepts.md)
> <br>
> commit 1fedfc4b96c2017f64ecfcf41a0a07e2e815f24f
> commit 1f49356cb21cbc27bc5359bfe655d26757d4b137
本章介绍一些几乎所有编程语言都有的概念,以及它们在 Rust 中是如何工作的。很多编程语言的核心概念都是共通的,本章中展示的概念都不是 Rust 所特有的,不过我们会在 Rust 上下文中讨论它们,并解释使用这些概念的惯例。
具体来说,我们将会学习变量、基本类型、函数、注释和控制流。每一个 Rust 程序中都会用到这些基础知识,提早学习这些概念会让你在起步时就打下坚实的基础。
## 关键字
Rust 语言有一组保留的 **关键字***keywords*),就像大部分语言一样,它们只能由语言本身使用。记住,你不能使用这些关键字作为变量或函数的名称。大部分关键字有特殊的意义,你将在 Rust 程序中使用它们完成各种任务;一些关键字目前没有相应的功能,是为将来可能添加的功能保留的。可以在附录 A 中找到关键字的列表。
## 标识符
这里我们将对本书中的一些概念做一些解释变量、函数、结构体等等。所有这些都需要名称。Rust 中的名称被称为 “标识符”“identifier”它们可以是任意非空的 ASCII 字符串,不过有如下限制:
要么是:
* 第一个字符是字母。
* 其它字符是字母数字或者 _。
或者是:
* 第一个字符是 _。
* 标识符需多于一个字符。单独的 _ 不是标识符。
* 其它字符是字母数字或者 _。
### 原始标识符
有时出于某种原因你可能需要将关键字作为名称。比如你需要调用 C 语言库中名为 *match* 的函数,在 C 语言中 *match* 不是关键字。为此你可以使用 “原始标识符”“raw identifier”。原始标识符以 `r#` 开头:
```rust,ignore
let r#fn = "this variable is named 'fn' even though that's a keyword";
// 调用名为 'match' 的函数
r#match();
```
你无需经常用到原始标识符,但是当你 **真正** 需要它们时可以这么做。
> ## 关键字
> Rust 语言有一组保留的 **关键字***keywords*),就像大部分语言一样,它们只能由语言本身使用。记住,你不能使用这些关键字作为变量或函数的名称。大部分关键字有特殊的意义,你将在 Rust 程序中使用它们完成各种任务;一些关键字目前没有相应的功能,是为将来可能添加的功能保留的。可以在附录 A 中找到关键字的列表。

Loading…
Cancel
Save