capypad
0 Tage Serie
rust / beginner
Snippet

Ownership verstehen

Rust verwendet ein Ownership-System, um Speicher effizient ohne Garbage Collection zu verwalten. Wenn Sie s1 an s2 zuweisen, wird das Eigentum an den Daten auf s2 übertragen, und s1 ist nicht mehr gültig. Dies verhindert Doppel-Freiigaben-Fehler. Für schreibgeschützten Zugriff können Sie eine Referenz mit & leihen, was mehrere Referenzen ohne Eigentumsübertragung ermöglicht.

snippet.rs
rust
1
2
3
4
5
6
7
8
9
10
11
12
13
fn main() {
let s1 = String::from("hello");
let s2 = s1;
// println!("{}", s1); // Error: s1 is no longer valid
println!("{}", s2);
let s3 = String::from("world");
let s4 = &s3;
println!("{}", s3); // s3 is still valid, s4 just borrows it
println!("{}", s4);
}
Erklärung
1
let s1 = String::from("hello");
Erstellt einen String, der s1 gehört
2
let s2 = s1;
Ownership wird an s2 übertragen, s1 ist jetzt ungültig
3
let s4 = &s3;
Erstellt eine Leihreferenz, s4 besitzt die Daten nicht
4
println!("{}", s3);
s3 ist noch gültig, da nur eine Referenz geliehen wurde