rust / expert
Snippet
Generic Associated Types (GATs) für Iteration
Generic Associated Types ermöglichen es assoziierten Typen, Lebensdauer- oder Typparameter zu tragen. Dies ist essenziell für 'Lending Iteratoren', bei denen das vom Iterator gelieferte Element vom Iterator selbst leiht – ein Muster, das Standard-Iteratoren nicht effizient ausdrücken können.
snippet.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
trait LendingIterator {type Item<'a> where Self: 'a;fn next<'a>(&'a mut self) -> Option<Self::Item<'a>>;}struct MyStream(Vec<u32>);impl LendingIterator for MyStream {type Item<'a> = &'a u32;fn next<'a>(&'a mut self) -> Option<Self::Item<'a>> {self.0.get(0) // Simplified logic}}
Erklärung
1
type Item<'a> where Self: 'a;
Definiert einen assoziierten Typ, der generisch über eine Lebensdauer 'a ist, die vom Aufrufer bestimmt wird.
2
fn next<'a>(&'a mut self)
Die Methodensignatur bindet die Lebensdauer des zurückgegebenen Items an die Ausleihung des Iterators.