rust / beginner
Snippet
Ownership verstehen: Move-Semantik
Wenn du s2 = s1 für Heap-Typen wie String zuweist, wird der Besitz (Move) auf s2 übertragen. s1 wird ungültig. Dies verhindert Double-Free-Bugs und erzwingt.single Ownership. Primitive wie i32 werden Kopiert statt Bewegt.
snippet.rs
1
2
3
4
5
6
fn main() {let s1 = String::from("hello");let s2 = s1;// println!("{}", s1); // Error: s1 was movedprintln!("{}", s2);}
Erklärung
1
let s1 = String::from("hello")
Erstellt einen String, der auf dem Heap mit dem Wert "hello" alloziert wird.
2
let s2 = s1
Der Besitz der Heap-Daten wird auf s2 übertragen. s1 ist nicht mehr zugänglich.
3
println!("{}", s2)
Dies funktioniert, weil s2 nun den Besitz der Daten hat.