面试题答案
一键面试struct User {
name: String,
age: u32,
}
struct Team {
users: Vec<User>,
}
impl Team {
fn add_user(&mut self, user: User) {
self.users.push(user);
}
}
// 当Team实例被删除时,Rust的所有权系统会自动处理内存释放。
// Team拥有users Vec,而Vec拥有其内部的User实例。
// 当Team实例超出作用域时,其析构函数会被自动调用,
// 这个析构函数会递归地调用Vec的析构函数,Vec又会调用每个User的析构函数,
// 从而正确释放所有User实例占用的内存。
// 在add_user方法中,我们使用&mut self表示可变借用,
// 因为我们需要修改Team实例内部的users Vec。
// user参数通过值传递,这意味着user的所有权被转移到了Vec中。