Avatar ·

Verwaltung der Lebensdauer des Garbage Collectors in Rust: Wie gibt man Speicher richtig frei?

Hallo zusammen! Ich bin neu in Rust und komme von Java, wo alles einfach ist – der GC räumt den Speicher selbst auf. In Rust bin ich auf das Konzept von Ownership und Borrowing gestoßen und habe ein Problem.\n\nIch schreibe ein kleines Spiel, in dem es Objekte gibt, die für eine unbestimmte Zeit leben sollen. Zum Beispiel Kugeln, Gegner, Partikeleffekte. In Java würde ich einfach `new Bullet()` erstellen, und der GC würde sie automatisch entfernen, wenn sie den Gültigkeitsbereich verlassen. In Rust hingegen beschwert sich der Compiler über die Lebensdauer.\n\nHier ist ein vereinfachter Code, der nicht kompiliert wird:\n\n```rust\nstruct Bullet {\n x: f32,\n y: f32,\n alive: bool,\n}\n\nstruct Game {\n bullets: Vec,\n}\n\nimpl Game {\n fn spawn_bullet(&mut self, x: f32, y: f32) {\n // Fehler: Kann keinen Verweis auf self.bullets zurückgeben\n let bullet = Bullet { x, y, alive: true };\