Avatar ·

Was wird in Rust anstelle eines Garbage Collectors zur Speicherverwaltung verwendet?

Hallo! Ich habe gerade angefangen, Rust nach Java und Python zu lernen, und ich habe ein Missverständnis. In Java und Python gibt es einen Garbage Collector (GC), der automatisch Speicher freigibt, wenn Objekte nicht mehr benötigt werden. Aber ich habe gelesen, dass Rust keinen GC hat. Wie verwaltet Rust dann den Speicher ohne Garbage Collector? Muss ich wirklich manuell `free()` oder `delete` wie in C aufrufen? Das ist doch unbequem und führt zu Speicherlecks! Hier ist ein einfaches Beispiel, das ich geschrieben habe, um zu verstehen, was passiert: ```rust fn main() { let s1 = String::from("Hallo"); let s2 = s1; // Ich erwartete eine Kopie, wie in Java println!("{}", s1); // Das kompiliert nicht! Fehler: borrow of moved value } ``` Ich verstehe nicht, warum `s1` nach der Zuweisung an `s2` nicht mehr verfügbar ist. In Java würde `s2` einfach auf denselben String zeigen, und `s1` wäre immer noch gültig.