Rust用什么替代了垃圾收集器?Rust中GC的替代方案
大家好!我从Java和Python转向Rust,有一个根本性问题困扰着我。在Java中,我习惯了垃圾收集器(GC)在对象不可达时自动释放内存。在Python中,类似地,有引用计数和用于循环引用的GC。但Rust完全不同:这里没有垃圾收集器,然而这门语言被认为是安全的。
我写了一个简单的例子,在Java或Python中能正常工作,但在Rust中却引发疑问:
```rust
struct User {
name: String,
posts: Vec,
}
fn main() {
let user = User {
name: "Alice".to_string(),
posts: vec!["Hello".to_string()],
};
// Rust如何知道何时释放user的内存?
// 如果我把user传给函数会发生什么?
process(user);
// 这里——尝试在move之后使用user!
// println!("{}", user.name); // 编译错误!
}
fn process(u: User) {
println!("P