
文章插图
到目前为止,我们已经讲解了包括 变量、可变性、常量、数据类型、函数、if-else 语句和循环在内的一些关于 Rust 编程的基础知识 。
在 Rust 基础系列的最后一章里 , 让我们现在用 Rust 编写一个程序,使用这些主题,以便更好地理解它们在现实世界中的用途 。让我们来编写一个相对简单的程序,用来从水果市场订购水果 。
我们程序的基本结构来让我们首先向用户问好,并告诉他们如何与程序交互 。
fn main { println!("欢迎来到水果市?。?); println!("请选择要购买的水果 。n"); println!("n可以购买的水果:苹果、香蕉、橘子、芒果、葡萄"); println!("购买完成后,请输入“quit”或“q” 。n");}获取用户输入上面的代码非常简单 。目前,你不知道接下来该做什么,因为你不知道用户接下来想做什么 。所以让我们添加一些代码,接受用户输入并将其存储在某个地方以便稍后解析,然后根据用户输入采取适当的操作 。
use std::io;fn main { println!("欢迎来到水果市?。?); println!("请选择要购买的水果 。n"); println!("n可以购买的水果:苹果、香蕉、橘子、芒果、葡萄"); println!("购买完成后,请输入“quit”或“q” 。n"); // 获取用户输入 let mut user_input = String::new; io::stdin .read_line(&mut user_input) .expect("无法读取用户输入 。");}有三个新元素需要告诉你 。所以让我们对这些新元素进行浅层次的探索 。1. 理解 use 关键字在这个程序的第一行,你可能已经注意到我们“使用”(哈哈?。┝艘桓鼋凶?
use的新关键字 。Rust 中的use关键字类似于 C/C++ 中的#include指令和 Python 中的import关键字 。使用use关键字 , 我们从 Rust 标准库std中“导入”了io(输入输出)模块 。LCTT 译注:“使用”在原文中为“use”,与新介绍的关键字一样 。你可能会想知道为什么我们在可以使用
println宏来将某些内容输出到标准输出时 , 导入io模块是必要的 。Rust 的标准库有一个叫做prelude的模块,它会自动被包含 。该模块包含了 Rust 程序员可能需要使用的所有常用函数,比如println宏 。(你可以在这里阅读更多关于std::prelude模块的内容 。)Rust 标准库
std中的io模块是接受用户输入所必需的 。因此,我们在程序的第一行添加了一个use语句 。2. 理解 Rust 中的 String 类型在第 11 行,我创建了一个新的可变变量
user_input,正如它的名字所表示的那样,它将被用来存储用户输入 。但是在同一行 , 你可能已经注意到了一些“新的”东西(哈哈 , 又来了?。?。LCTT 译注:“新的”在原文中为“new”,在第 11 行的代码中,原作者使用了我没有使用双引号(String::new函数,所以此处的梗与“使用”一样,原作者使用了一个在代码中用到的单词 。
"")声明一个空字符串,而是使用String::new函数来创建一个新的空字符串 。""与String::new的区别是你将在 Rust 系列的后续文章中学习到的 。现在 , 只需要知道,使用String::new函数,你可以创建一个可变的,位于堆上的字符串 。如果我使用
""创建了一个字符串,我将得到一个叫做“字符串切片”的东西 。字符串切片的内容也位于堆上,但是字符串本身是不可变的 。所以,即使变量本身是可变的,作为字符串存储的实际数据是不可变的,需要被覆盖而不是修改 。3. 接受用户输入在第 12 行,我调用了
std::io的stdin函数 。如果我在程序的开头没有导入std::io模块,那么这一行将是std::io::stdin而不是io::stdin 。sdtin函数返回一个终端的输入句柄 。read_line函数抓住这个输入句柄,然后,正如它的名字所暗示的那样,读取一行输入 。这个函数接受一个可变字符串的引用 。所以,我传入了user_input变量 , 通过在它前面加上&mut,使它成为一个可变引用 。??read_line函数有一个
- 牡丹吊兰有毒吗,心叶日中花有毒吗
- 冰块怎么做不容易化,怎样让冰块保持不融化
- 抖音怎么制作手动翻照片,抖音图集怎么搞成自己翻?
- 中筋粉和高筋粉的区别有哪些,高筋面粉和中筋面粉的区别
- 锂保存在哪里,锂单质存放在哪?
- 老公生日送什么礼物,送老公生日礼物送什么比较有意义
- 炒蚬子用不用焯水,辣炒蚬子 是先煮一下呢 还是直接炒
- 雅泰角鲨烯胶囊的功效,角鲨烯软胶囊的功效与作用
- 海上交通与陆上交通相比,明显的优势有,陆上运输与海上运输的优势各是什么
- 中国五大名酒,中国五大名酒是什么?
