Iterator s'implem plutot sur un newtype
Bravo mais en vrai ta codé IntoIterator (la version Owned) et on fait souvent Iterator sur un newtype pour eviter d'exposer le type interne et avoir des ref sur le type qu'on modifie.
impl<T> Iterator for SimpleLinkedList<T> {
type Item = T;
fn next(&mut self) -> Option<Self::Item> {
/*
Ici, l'itérator est possible grâce à une appel de pop() à chaque étape d'itération :
-> avantage : c'est très simple à coder
-> désavantage : ça fait disparaître la liste à chaque itération...
C'est pour cela que j'ai implémenté le trait Clone à la liste, afin de pouvoir explorer
le clone d'une liste, histoire de laisser son original utilisable par la suite.
*/
return self.pop();
}
}
Lecture: https://aloso.github.io/2021/03/09/creating-an-iterator#a-traverse-method
PS: bravo