Rust中“cannot move out of index of”错误:含义及修复方法
你好!我开始学习Rust,在处理vector时遇到了一个令人困惑的错误。我有一个`User`结构体,并尝试通过索引从vector中提取一个元素,将其传递给一个接受所有权的函数。这是我的代码:
```rust
struct User {
name: String,
age: u32,
}
fn process_user(user: User) {
println!("Processing user: {}", user.name);
}
fn main() {
let mut users = vec![
User { name: "Alice".to_string(), age: 30 },
User { name: "Bob".to_string(), age: 25 },
];
let first_user = users[0]; // 错误:cannot move out of index of `Vec`
process_user(first_user);
}
```
编译器报错:`error[E0507]: cannot move out of index of 'Vec'`。我理解Rust严格控制所有权,但为什么我不能直接从vector中取出元素?在其他语言(Python、Java)中这没有问题。我哪里做错了?如何正确地从vector中提取元素并将其传递给函数?