Avatar ·

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