Rust 为什么我需要第二次重复写“mut”?

Rust 为什么我需要第二次重复写“mut”?,rust,Rust,可变变量是用关键字mut声明和初始化的,但在下一行代码中使用时,必须重复关键字mut let mut guess = String::new(); io::stdin() .read_line(&mut guess) .expect("Failed to read line"); 我的期望是,一旦一个变量被声明并初始化为可变的,它仍然是可变的。这是一种句法上的糖分,还是有具体的原因 我希望上面的代码是这样的: let mut guess = String::new()

可变变量是用关键字mut声明和初始化的,但在下一行代码中使用时,必须重复关键字mut

let mut guess = String::new();

io::stdin()
    .read_line(&mut guess)
    .expect("Failed to read line");
我的期望是,一旦一个变量被声明并初始化为可变的,它仍然是可变的。这是一种句法上的糖分,还是有具体的原因

我希望上面的代码是这样的:

let mut guess = String::new();

io::stdin()
    .read_line(&guess)
    .expect("Failed to read line");

请注意,我在调用read_行中省略了mut关键字。

我强烈建议您返回并重新阅读,特别是关于

有两种类型的引用:不可变和可变。即使某个变量可能发生变异,您也可以选择获取对它的不可变引用。您可以通过说&foo或&mut-foo来进行选择

此功能对于您遵守以下要求非常重要:

在任何给定时间,您都可以拥有以下任一项,但不能同时拥有这两项: 一个可变引用。 任何数量的不可变引用。
因为需要对字符串的可变引用,所以您需要说&mut guess。

我强烈建议您返回并重新阅读,特别是关于的部分

有两种类型的引用:不可变和可变。即使某个变量可能发生变异,您也可以选择获取对它的不可变引用。您可以通过说&foo或&mut-foo来进行选择

此功能对于您遵守以下要求非常重要:

在任何给定时间,您都可以拥有以下任一项,但不能同时拥有这两项: 一个可变引用。 任何数量的不可变引用。
因为需要对字符串的可变引用,所以需要说&mut guess。

要扩展引用的文本,写入&x对于不可变的x非常有用,因为它允许同时创建对x的多个引用。如果x可变时,每个&x自动意味着&mut x,那么您将无法在单个范围内创建多个对x的引用。要扩展引用的文本,写入&x对于不可变的x非常有用,因为它允许同时创建对x的多个引用。如果当x是可变的时,每个&x自动意味着&mut x,那么您将无法在单个范围内创建多个对x的引用。