Rust中用什么替代垃圾回收器来管理内存?
你好!我刚开始在Java和Python之后学习Rust,遇到了一个困惑。在Java和Python中有垃圾回收器(GC),当对象不再需要时会自动释放内存。但我读到Rust没有GC。那么Rust在没有垃圾回收器的情况下如何管理内存?难道我必须像在C中那样手动调用`free()`或`delete`吗?这很不方便且容易导致内存泄漏!
下面是我写的一个简单示例,试图理解会发生什么:
```rust
fn main() {
let s1 = String::from("Привет");
let s2 = s1; // 我期望像Java中那样进行复制
println!("{}", s1); // 这无法编译!错误:borrow of moved value
}
```
我不明白为什么在赋值给`s2`后`s1`不再可用。在Java中,`s2`只是指向同一个字符串,而`s1`仍然有效。什么是“move”,它与没有GC有什么关系?Rust如何在没有垃圾回收器的情况下保证内存安全?请为新手解释一下。
另外,我听说过“所