Gestión del tiempo de vida del garbage collector en Rust: ¿cómo liberar memoria correctamente?
¡Hola a todos! Soy nuevo en Rust, vengo de Java, donde todo es simple — el GC limpia la memoria por sí solo. En Rust me encontré con el concepto de ownership y borrowing, y tengo un problema.
Estoy escribiendo un pequeño juego donde hay objetos que deben vivir un tiempo indefinido. Por ejemplo, balas, enemigos, partículas de efectos. En Java simplemente crearía `new Bullet()`, y el GC los eliminaría cuando salen del scope. En Rust, el compilador se queja sobre los lifetimes.
Aquí hay un código simplificado que no compila:
```rust
struct Bullet {
x: f32,
y: f32,
alive: bool,
}
struct Game {
bullets: Vec,
}
impl Game {
fn spawn_bullet(&mut self, x: f32, y: f32) {
// Error: no puedo devolver una referencia a self.bullets
let bullet = Bullet { x, y, alive: true };
self.bullets.push(bullet);
}
fn update(&mut self) {
// Necesito eliminar las balas muertas
self.bullets.retain(|b| b.alive);
}
}
```
El problema es que cuando yo