Avatar ·

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中提取元素并将其传递给函数?