无法可变借用不可变绑定的字段

  • 本文关键字:不可变 绑定 字段 rust
  • 更新时间 :
  • 英文 :


如何更改嵌套结构实例中字段的值?

// Do Not Change - Start
struct Base {
val: String,
}
struct Level1 {
val: Base,
}
struct Level2 {
val: Level1,
}
// Do Not Change - End
fn main() {
let x = Level2 {
val: Level1 {
val: Base {
val: "World".to_string(),
},
},
};
println!(" Hello {}", x.val.val.val);
x.val.val.val = "Moon".to_string();
println!(" Hello {}", x.val.val.val);
}

操场

error[E0594]: cannot assign to field `x.val.val.val` of immutable binding
--> src/main.rs:28:5
|
18 |     let x = Level2 {
|         - help: make this binding mutable: `mut x`
...
28 |     x.val.val.val = "Moon".to_string();
|     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot mutably borrow field of immutable binding

我强烈建议您回去重读Rust编程语言,尤其是关于变量和可变性的章节。


按照编译器告诉的操作:

help: make this binding mutable: `mut x`
请参阅:
  • 理解结构域突变
  • 如何变异结构';s字段来自方法
  • 如何在Rust中更改矢量中元素的字段
  • 更改结构中一个字段的简单方法

最新更新