Avatar ·

Was bedeuten Identifikatoren mit einfachem Anführungszeichen (') in Rust?

Hallo! Ich habe vor kurzem angefangen, Rust zu lernen, und stoße ständig in fremdem Code auf seltsame Identifikatoren, die mit einem einfachen Anführungszeichen beginnen, wie `'a`, `'static`, `'b`. Zuerst dachte ich, es wären Makros oder spezielle Variablen, aber dann bemerkte ich, dass sie oft in Funktions- und Strukturdeklarationen vorkommen. Hier ist ein Beispiel, das ich in der Dokumentation gefunden habe: ```rust fn longest<'a>(x: &'a str, y: &'a str) -> &'a str { if x.len() > y.len() { x } else { y } } ``` Was ist `'a`? Warum steht es in spitzen Klammern nach dem Funktionsnamen? Ich verstehe, dass es mit der Lebensdauer (lifetime) zusammenhängt, aber ich kann nicht verstehen, wie das funktioniert. In anderen Sprachen wie C++ oder Java habe ich so etwas nicht gesehen. Bitte erklären Sie mir in einfachen Worten, was das für Wesen sind und wozu sie dienen. Besonders verwirrt mich `'static` – es kommt oft in String-Literalen und Konstanten vor. Ich wäre dankbar für eine verständliche Erklärung mit Beispielen, denn im Moment sieht das für mich wie Magie aus.