mirror of
https://github.com/KaiserY/trpl-zh-cn
synced 2024-11-09 08:51:18 +08:00
modified: src/ch01-02-hello-world.md
modified: src/ch02-00-guessing-game-tutorial.md
This commit is contained in:
parent
b5c98492f1
commit
c510bd8bcc
@ -238,7 +238,7 @@ $ cargo run
|
|||||||
Hello, world!
|
Hello, world!
|
||||||
```
|
```
|
||||||
|
|
||||||
注意这一次,并没有出现告诉我们 Cargo 正在编译 `hello_cargo` 的输出。Cargo 发现文件并没有被改变,直接运行了二进制文件。如果修改了源文件的话,将会出现像这样的输出:
|
注意这一次并没有出现“正在编译 `hello_cargo`”的输出。Cargo 发现文件并没有被改变,直接运行了二进制文件。如果修改了源文件的话,将会出现像这样的输出:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ cargo run
|
$ cargo run
|
||||||
@ -256,11 +256,11 @@ Cargo 的另一个优点是,不管你使用什么操作系统,它的命令
|
|||||||
|
|
||||||
### 发布构建
|
### 发布构建
|
||||||
|
|
||||||
当项目最终准备好发布了,可以使用`cargo build --release`来优化编译项目。这会在 *target/release* 下生成可执行文件,而不是 *target/debug*。这些优化可以让 Rust 代码运行的更快,不过启用他们会让程序花更长的时间编译。这也是为何这是两种不同的配置:一个为了开发,这时你经常想要快速重新构建;另一个构建提供给用户的最终程序,这时并不会重新构建并希望程序能运行得越快越好。如果你在测试代码的运行时间,请确保运行`cargo build --release`并使用 *target/release* 下的可执行文件进行测试。
|
当项目最终准备好发布了,可以使用 `cargo build --release` 来优化编译项目。这会在 *target/release* 下生成可执行文件,而不是 *target/debug*。优化可以让 Rust 代码运行的更快,然而也需要更长的编译时间。因此产生了两种不同的配置:一种为了开发,你需要快速重新构建;另一种构建给用户的最终程序,不会重新构建,并且程序能运行得越快越好。如果你在测试代码的运行时间,请确保运行 `cargo build --release` 并使用 *target/release* 下的可执行文件。
|
||||||
|
|
||||||
### 把 Cargo 当作习惯
|
### 把 Cargo 当作习惯
|
||||||
|
|
||||||
对于简单项目, Cargo 并不能比`rustc`提供更多的价值,不过随着开发的进行终将体现它的价值。对于拥有多个 crate 的复杂项目,让 Cargo 来协调构建将更简单。有了 Cargo,只需运行`cargo build`,然后一切将有序运行。即便这个项目很简单,也它使用了很多你之后的 Rust 生涯将会用得上的实用工具。其实你可以开始任何你想要从事的项目,使用下面的命令:
|
对于简单项目, Cargo 并不比 `rustc` 更有价值,不过随着开发的进行终将体现它的价值。对于拥有多个 crate 的复杂项目,让 Cargo 来协调构建将更简单。有了 Cargo,只需运行`cargo build`,然后一切将有序运行。即便这个项目很简单,也它使用了很多你之后的 Rust 生涯将会用得上的实用工具。其实你可以开始任何你想要从事的项目,使用下面的命令:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ git clone someurl.com/someproject
|
$ git clone someurl.com/someproject
|
||||||
|
@ -4,13 +4,13 @@
|
|||||||
> <br>
|
> <br>
|
||||||
> commit e6d6caab41471f7115a621029bd428a812c5260e
|
> commit e6d6caab41471f7115a621029bd428a812c5260e
|
||||||
|
|
||||||
让我们通过自己动手的方式一起完成一个项目来快速上手 Rust!本章将介绍一些常用的 Rust 概念,并通过真实的程序来展示如何运用他们。你将会学到`let`、`match`、方法、关联函数、使用外部 crate 等更多的知识!接下来的章节会探索这些概念的细节。在这一章,我们将练习基础。
|
让我们亲自动手,快速熟悉 Rust!本章将介绍 Rust 中常用的一些概念,并通过真实的程序来展示如何运用。你将会学到更多诸如 `let`、`match`、方法、关联函数、外部 crate 等知识!后继章节会深入探索这些概念的细节。在这一章,我们将练习基础。
|
||||||
|
|
||||||
我们会实现一个经典的新手编程问题:猜猜看游戏。它是这么工作的:程序将会随机生成一个 1 到 100 之间的随机整数。接着它会提示玩家输入一个猜测。当输入了一个猜测后,它会提示猜测是太大了还是太小了。如果猜对了,它会打印出祝贺并退出。
|
我们会实现一个经典的新手编程问题:猜猜看游戏。它是这么工作的:程序将会随机生成一个 1 到 100 之间的随机整数。接着它会请玩家猜一个数并输入,然后提示猜测是大了还是小了。如果猜对了,它会在退出前祝贺你。
|
||||||
|
|
||||||
## 准备一个新项目
|
## 准备一个新项目
|
||||||
|
|
||||||
要创建一个新项目,进入在第一章创建的**项目**目录,像这样使用 Cargo 创建它:
|
要创建一个新项目,进入第一章创建的**项目**目录,使用 Cargo 创建它:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ cargo new guessing_game --bin
|
$ cargo new guessing_game --bin
|
||||||
@ -60,7 +60,7 @@ Hello, world!
|
|||||||
|
|
||||||
## 处理一次猜测
|
## 处理一次猜测
|
||||||
|
|
||||||
程序的第一部分会请求用户输入,处理输入,并检查输入是否为期望的形式。首先,允许玩家输入一个猜测。在 *src/main.rs* 中输入列表 2-1 中的代码。
|
程序的第一部分会请求用户输入,处理输入,并检查输入是否符合预期。首先,允许玩家输入一个猜测。在 *src/main.rs* 中输入列表 2-1 中的代码。
|
||||||
|
|
||||||
<span class="filename">Filename: src/main.rs</span>
|
<span class="filename">Filename: src/main.rs</span>
|
||||||
|
|
||||||
@ -83,17 +83,17 @@ fn main() {
|
|||||||
|
|
||||||
<span class="caption">Listing 2-1: Code to get a guess from the user and print it out</span>
|
<span class="caption">Listing 2-1: Code to get a guess from the user and print it out</span>
|
||||||
|
|
||||||
这些代码包含很多信息,所以让我们一点一点地过一遍。为了获取用户输入并接着打印结果作为输出,我们需要将`io`(输入/输出)库引入作用域中。`io`库来自于标准库(也被称为`std`):
|
这些代码包含很多信息,我们一点一点地过一遍。为了获取用户输入并打印结果作为输出,我们需要将`io`(输入/输出)库引入作用域中。`io`库来自于标准库(也被称为`std`):
|
||||||
|
|
||||||
```rust,ignore
|
```rust,ignore
|
||||||
use std::io;
|
use std::io;
|
||||||
```
|
```
|
||||||
|
|
||||||
Rust 默认只在每个程序的 [*prelude*][prelude]<!-- ignore --> 中引用很少的一些类型。如果想要使用的类型并不在 prelude 中,你必须使用一个`use`语句显式的将其引入到作用域中。使用`std::io`库将提供很多`io`相关的功能,接受用户输入的功能。
|
Rust 默认只在每个程序的 [*prelude*][prelude]<!-- ignore --> 中引用很少的一些类型。如果想要使用的类型并不在 prelude 中,你必须使用一个`use`语句显式的将其引入到作用域中。`std::io`库提供很多`io`相关的功能,比如接受用户输入。
|
||||||
|
|
||||||
[prelude]: https://doc.rust-lang.org/std/prelude/index.html
|
[prelude]: https://doc.rust-lang.org/std/prelude/index.html
|
||||||
|
|
||||||
正如第一章所讲,`main`函数是程序的入口点:
|
如第一章所提及,`main`函数是程序的入口点:
|
||||||
|
|
||||||
```rust,ignore
|
```rust,ignore
|
||||||
fn main() {
|
fn main() {
|
||||||
@ -101,7 +101,7 @@ fn main() {
|
|||||||
|
|
||||||
`fn`语法声明了一个新函数,`()`表明没有参数,`{`作为函数体的开始。
|
`fn`语法声明了一个新函数,`()`表明没有参数,`{`作为函数体的开始。
|
||||||
|
|
||||||
第一章也讲到了,`println!`是一个在屏幕上打印字符串的宏:
|
第一章也提及,`println!`是一个在屏幕上打印字符串的宏:
|
||||||
|
|
||||||
```rust,ignore
|
```rust,ignore
|
||||||
println!("Guess the number!");
|
println!("Guess the number!");
|
||||||
@ -109,7 +109,7 @@ println!("Guess the number!");
|
|||||||
println!("Please input your guess.");
|
println!("Please input your guess.");
|
||||||
```
|
```
|
||||||
|
|
||||||
这些代码仅仅打印一个提示,说明游戏的内容并请求用户输入。
|
这些代码仅仅打印提示,介绍游戏的内容然后请用户输入。
|
||||||
|
|
||||||
### 用变量储存值
|
### 用变量储存值
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user