如何更改嵌套结构实例中字段的值?
// 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中更改矢量中元素的字段
- 更改结构中一个字段的简单方法