capypad
0 Tage Serie
rust / beginner
Snippet

Ownership-Regeln auf einen Blick

Ownership ist Rusts einzigartiges Speicherverwaltungssystem. Wenn du s1 an s2 zuweist, wird Ownership verschoben. s1 ist dann nicht mehr gültig. Borrowing mit & ermöglicht Referenzieren ohne Ownership-Transfer.

snippet.rs
rust
1
2
3
4
5
6
7
8
9
10
11
fn main() {
let s1 = String::from("hello");
let s2 = s1; // s1 is moved to s2
// println!("{}", s1); // This would error!
println!("{}", s2); // This works fine
let s3 = String::from("world");
let s4 = &s3; // Borrowing with reference
println!("{} and {}", s3, s4); // Both accessible
}
Erklärung
1
let s2 = s1;
Ownership von s1 wird an s2 verschoben; s1 wird invalidiert
2
// println!("{}", s1); // FEHLER
Auskommentierte Zeile würde Kompilierfehler verursachen
3
let s4 = &s3;
Erstellt eine Referenz auf s3 ohne Ownership-Übernahme
4
println!("{} and {}", s3, s4);
Beide s3 und s4 sind gültig wegen Borrowing