@Cubik65536
https://linux.cn/article-15935-1.html
关于你 ID 中的引号,我修改了几次程序,都无法去掉,现在还找不到问题所在。
This commit is contained in:
Xingyu Wang 2023-06-23 11:46:23 +08:00
parent 0f22507219
commit 10bcdb360b

View File

@ -3,13 +3,15 @@
[#]: author: "Pratham Patel https://itsfoss.com/author/pratham/"
[#]: collector: "lkxed"
[#]: translator: "Cubik65536"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-15935-1.html"
Rust 基础系列 #8:编写里程碑 Rust 程序
======
![][0]
到目前为止,我们已经讲解了包括 [变量、可变性、常量][1]、[数据类型][2]、[函数][3]、[if-else 语句][4] 和 [循环][5] 在内的一些关于 Rust 编程的基础知识。
在 Rust 基础系列的最后一章里,让我们现在用 Rust 编写一个程序,使用这些主题,以便更好地理解它们在现实世界中的用途。让我们来编写一个相对简单的程序,用来从水果市场订购水果。
@ -54,21 +56,21 @@ fn main() {
有三个新元素需要告诉你。所以让我们对这些新元素进行浅层次的探索。
#### 1. 理解 `use` 关键字
#### 1. 理解 use 关键字
在这个程序的第一行,你可能已经注意到我们使用(哈哈!)了一个叫做 `use` 的新关键字。Rust 中的 `use` 关键字类似于 C/C++ 中的 `#include` 指令和 Python 中的 `import` 关键字。使用 `use` 关键字,我们从 Rust 标准库 `std` 中“导入”了 `io`(输入输出)模块。
在这个程序的第一行,你可能已经注意到我们使用(哈哈!)了一个叫做 `use` 的新关键字。Rust 中的 `use` 关键字类似于 C/C++ 中的 `#include` 指令和 Python 中的 `import` 关键字。使用 `use` 关键字,我们从 Rust 标准库 `std` 中“导入”了 `io`(输入输出)模块。
> LCTT 译注“使用”在原文中为“use”与新介绍的关键字一样。
你可能会想知道为什么我们在可以使用 `println` 宏来将某些内容输出到标准输出时,导入 _io_ 模块是必要的。Rust 的标准库有一个叫做 `prelude` 的模块,它会自动被包含。该模块包含了 Rust 程序员可能需要使用的所有常用函数,比如 `println` 宏。(你可以在[这里][6]阅读更多关于 `std::prelude` 模块的内容。)
你可能会想知道为什么我们在可以使用 `println` 宏来将某些内容输出到标准输出时,导入 `io` 模块是必要的。Rust 的标准库有一个叫做 `prelude` 的模块,它会自动被包含。该模块包含了 Rust 程序员可能需要使用的所有常用函数,比如 `println` 宏。(你可以在 [这里][6] 阅读更多关于 `std::prelude` 模块的内容。)
Rust 标准库 `std` 中的 `io` 模块是接受用户输入所必需的。因此,我们在程序的第一行添加了一个 `use` 语句。
#### 2. 理解 Rust 中的 String 类型
在第 11 行,我创建了一个新的可变变量 `user_input`,正如它的名字所表示的那样,它将被用来存储用户输入。但是在同一行,你可能已经注意到了一些新的东西(哈哈,又来了!)。
在第 11 行,我创建了一个新的可变变量 `user_input`,正如它的名字所表示的那样,它将被用来存储用户输入。但是在同一行,你可能已经注意到了一些新的东西(哈哈,又来了!)。
> LCTT 译注“新的”在原文中为“new”在第 11 行的代码中,原作者使用了 String::new() 函数,所以此处的梗与“使用”一样,原作者使用了一个在代码中用到的单词。
> LCTT 译注“新的”在原文中为“new”在第 11 行的代码中,原作者使用了 `String::new()` 函数,所以此处的梗与“使用”一样,原作者使用了一个在代码中用到的单词。
我没有使用双引号(`""`)声明一个空字符串,而是使用 `String::new()` 函数来创建一个新的空字符串。
@ -82,7 +84,7 @@ Rust 标准库 `std` 中的 `io` 模块是接受用户输入所必需的。因
`sdtin()` 函数返回一个终端的输入句柄。`read_line()` 函数抓住这个输入句柄,然后,正如它的名字所暗示的那样,读取一行输入。这个函数接受一个可变字符串的引用。所以,我传入了 `user_input` 变量,通过在它前面加上 `&mut`,使它成为一个可变引用。
> ⚠️ `read_line()` 函数有一个 _怪癖_。这个函数在用户按下回车键之后**_停止_**读取输入。因此,这个函数也会记录换行符(`\n`),并将一个换行符存储在你传入的可变字符串变量的结尾处。
> ⚠️ `read_line()` 函数有一个 _怪癖_。这个函数在用户按下回车键之后 **停止** 读取输入。因此,这个函数也会记录换行符(`\n`),并将一个换行符存储在你传入的可变字符串变量的结尾处。
所以,请在处理它时要么考虑到这个换行符,要么将它删除。
@ -505,6 +507,8 @@ fn price_grapes(quantity: f64) -> f64 {
Rust 基础系列到此结束。欢迎你的反馈。
*题图MJ/6d486f23-e6fe-4bef-a28d-df067ef2ec06*
--------------------------------------------------------------------------------
via: https://itsfoss.com/milestone-rust-program/
@ -512,7 +516,7 @@ via: https://itsfoss.com/milestone-rust-program/
作者:[Pratham Patel][a]
选题:[lkxed][b]
译者:[Cubik65536](https://github.com/Cubik65536)
校对:[校对者ID](https://github.com/校对者ID)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
@ -523,4 +527,5 @@ via: https://itsfoss.com/milestone-rust-program/
[3]: https://linux.cn/article-15855-1.html
[4]: https://linux.cn/article-15896-1.html
[5]: https://linux.cn/article-15908-1.html
[6]: https://doc.rust-lang.org/std/prelude/index.html?ref=itsfoss.com
[6]: https://doc.rust-lang.org/std/prelude/index.html
[0]: https://img.linux.net.cn/data/attachment/album/202306/23/114333ni9fkzpykmz37zpu.jpg