Avatar ·

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