Avatar ·

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