rust / intermediate
Snippet
Lebenszeiten in Rust verstehen
Lebenszeiten sind Rusts Methode zur Gewährleistung von Speichersicherheit ohne Garbage Collection. Sie verfolgen, wie lange Referenzen gültig sind. Die 'a Lebenszeit-Annotation verbindet Eingabe- und Ausgabe-Referenzen und garantiert, dass die zurückgegebene Referenz nicht länger lebt als die Eingaben. Structs mit Referenzen müssen ebenfalls Lebenszeiten deklarieren, um sicherzustellen, dass die referenzierten Daten lange genug existieren.
snippet.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
fn longest<'a>(x: &'a str, y: &'a str) -> &'a str {if x.len() > y.len() { x } else { y }}struct ImportantExcerpt<'a> {part: &'a str,}impl<'a> ImportantExcerpt<'a> {fn announce_and_return(&self, announcement: &str) -> &str {println!("Attention: {}", announcement);self.part}}
Erklärung
1
fn longest<'a>(x: &'a str, y: &'a str) -> &'a str
Generische Funktion mit Lebenszeit 'a. Beide Eingabereferenzen müssen mindestens so lange leben wie 'a, Ausgabe lebt mindestens 'a
2
struct ImportantExcerpt<'a>
Struct enthält eine Referenz, daher wird ein Lebenszeitparameter benötigt um Rust zu sagen wie lange diese Referenz gültig ist
3
fn announce_and_return(&self, announcement: &str) -> &str
Methode die eine Referenz zurückgibt; Lebenszeit ist an &self gebunden, sodass die Rückgabe solange gültig ist wie das Struct existiert