2.2.2 用变量存储姓名
访客的姓名将被存储在一个变量中。Rust的变量默认是不可变(immutable)的。不可变的变量一旦被赋值,其中存储的内容就不可以再被修改。你可以创建新的变量,这些新变量可以引用原有变量,或者复制原有变量。但无论如何,只要不可变变量被赋予了初始值,这个变量就不能再被修改了。你可以通过mut关键字来把一个变量显式标记为可变(mutable)的。一旦被标记为可变,这个变量的值就可以根据需要随时修改。
接下来要做的是为程序添加第二行代码:
FirstStepsWithRust/hello_yourname/src/main.rs
let mut your_name = String::new();
当心变种人[2]
变种人令人害怕,可变的变量也是如此。把所有变量都标记为可变是一种看起来很诱人的做法,因为那样就不用花精力去区分哪里需要可变,哪里不需要可变了。但是,当Rust编译器或者Clippy发现一个变量没有必要被标记为可变时,它们会给出警告信息。最好认真对待这些警告信息,因为如果每一个变量都能反映出开发者想表达的真实意图,那么理解整个程序就会变得更加简单。
[2] 原文中Mutation、Mutants、mutable几个单词具有相同的词根,作者在这里用了谐音梗。这段提示的意思是:不可变变量比可变变量简单很多,如果把原本可以是不可变的变量定义为可变的,会增加阅读代码的负担。——译者注
这行代码创建了一个名为your_name的可变变量,并且将其内容设置为一个空字符串。定义变量的语法如图2-1所示。
图2-1
String是一个Rust内置的类型。类型可以有多个与之关联的函数,我们将在2.6节中介绍如何为类型关联函数。
变量名应该符合snake_case风格
Rust建议在给变量命名时使用snake_case风格。使用小写字母,并且把空格替换为下画线。如果开发者忘记了这样做,Clippy将会给出提示。
接下来,你就可以从键盘获得访客的姓名,并将其存储到一个字符串变量中了。