接下来,创建一个 变量(variable)来储存用户输入,像这样:
#
# fn main() {
# println!("Guess the number!");
#
# println!("Please input your guess.");
#
let mut guess = String::new();
#
# io::stdin()
# .read_line(&mut guess)
# .expect("Failed to read line");
#
# println!("You guessed: {}", guess);
# }
现在程序开始变得有意思了!这一小行代码发生了很多事。我们使用 let 语句来创建变量。这里是另外一个例子:
处理一次猜测 37
这行代码新建了一个叫做 apples 的变量并把它绑定到值 5 上。在 Rust 中,变量默认是不可变的。我们将会在第三章的 ” 变量与可变性” 部分详细讨论这个概念。下面的例子展示了如何在变量名前使用 mut来使一个变量可变:
let mut bananas = 5; // 可变
回到猜猜看程序中。现在我们知道了 let mut guess 会引入一个叫做 guess 的可变变量。等号(=)告诉 Rust 我们现在想将某个值绑定在变量上。等号的右边是 guess 所绑定的值,它是 String:: new 的结果,这个函数会返回一个 String 的新实例。String 是一个标准库提供的字符串类型,它是 UTF-8 编码的可增长文本块。
:: new 那一行的 :: 语法表明 new 是 String 类型的一个 关联函数(associated function)。关联函数是针对类型实现的,在这个例子中是 String,而不是 String 的某个特定实例。一些语言中把它称为 静态方法
(static method)。
new 函数创建了一个新的空字符串,你会发现很多类型上有 new 函数,因为它是创建类型实例的惯用函数名。
总的来说,let mut guess = String::new(); 这一行创建了一个可变变量,当前它绑定到一个新的 String空实例上。