|
|
@ -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.");
|
|
|
|
```
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
这些代码仅仅打印一个提示,说明游戏的内容并请求用户输入。
|
|
|
|
这些代码仅仅打印提示,介绍游戏的内容然后请用户输入。
|
|
|
|
|
|
|
|
|
|
|
|
### 用变量储存值
|
|
|
|
### 用变量储存值
|
|
|
|
|
|
|
|
|
|
|
|