Gerenciamento do tempo de vida do garbage collector em Rust: como liberar memória corretamente?
Olá a todos! Sou novo em Rust, vim do Java, onde tudo é simples — o GC limpa a memória sozinho. Em Rust, me deparei com o conceito de ownership e borrowing, e tive um problema.
Estou escrevendo um pequeno jogo, onde há objetos que devem viver por tempo indeterminado. Por exemplo, balas, inimigos, partículas de efeitos. Em Java, eu simplesmente criaria `new Bullet()`, e o GC os removeria quando saíssem do escopo. Em Rust, o compilador reclama sobre lifetimes.
Aqui está um código simplificado que não 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) {
// Erro: não consigo retornar uma referência a self.bullets
let bullet = Bullet { x, y, alive: true };
self.bullets.push(bullet);
}
fn update(&mut self) {
// Preciso remover balas mortas
self.bullets.retain(|b| b.alive);
}
}
```
O problema é que quando eu