Avatar ·

Rust中的“cannot move out of borrowed content”错误:如何修复?

大家好!我开始学习Rust,遇到了一个无法理解的错误。我有一个`User`结构体和一个应该修改其`name`字段的函数。代码如下: ```rust struct User { name: String, age: u32, } fn update_name(user: &User, new_name: String) { user.name = new_name; // 这里出错 } fn main() { let user = User { name: String::from("Alice"), age: 30, }; update_name(&user, String::from("Bob")); println!("{}", user.name); } ``` 编译器报错:`cannot move out of borrowed content` 和 `cannot move out of behind a shared reference`。我明白我传递的是`&User`——这是一个不可变引用,但我想修改`name`字段。如果我将签名改为`&mut User`,错误就变成`cannot borrow immutable local variable 'user' as mutable`。我尝试在`main`中的`user`前添加`mut`,但编译器说不能将其作为可变借用,因为它已经被不可变借用了。