¿Qué reemplaza Rust al recolector de basura? Alternativas a GC en Rust
¡Hola, colegas! Estoy migrando a Rust después de varios años trabajando con Java y Python, y me atormenta una pregunta fundamental. En Java estoy acostumbrado a que el recolector de basura (GC) libera automáticamente la memoria cuando los objetos se vuelven inalcanzables. En Python es similar: conteo de referencias y GC para referencias cíclicas. Pero Rust es fundamentalmente diferente: aquí no hay recolector de basura, y sin embargo el lenguaje se considera seguro.
Escribí un ejemplo simple que en Java o Python funcionaría sin problemas, pero en Rust genera preguntas:
```rust
struct User {
name: String,
posts: Vec,
}
fn main() {
let user = User {
name: "Alice".to_string(),
posts: vec!["Hello".to_string()],
};
// ¿Cómo sabe Rust cuándo liberar la memoria de user?
// ¿Qué sucede si paso user a una función?
process(user);
// Y aquí — ¡intento de usar user después del move!
// println!("{}", user.name); // ¡Error de compilación!
}
fn process(u: User) {
println!("P