Bonjour, je ne comprend pas comment fonctionne la boucle for dans ces deux exemples...

Dans l'exemple 1 la variable element n'est pas une référence n'est-ce pas ? donc la propriété de cette variable est transmise à la variable le_plus_grand dans le if ? Donc d'après moi la valeur de retour n'est pas une référence bien que dans la signature de la fonction on a défini &T comme valeur de retour...
Dans l'exemple 2 la variable element est une référence et donc la propriété de cette variable est transmise à la variable le_plus_grand dans le if ?

pfff je m'emmele les pinceaux avec ces histoires de réference / pas références

exemple 1 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
fn le_plus_grand<T: PartialOrd>(liste: &[T]) -> &T {
    let mut le_plus_grand = &liste[0];
 
    for element in liste {
        if element > le_plus_grand {
            le_plus_grand = element;
 
        }
    }
 
    le_plus_grand
}
exemple 2 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
fn le_plus_grand<T: PartialOrd + Copy>(liste: &[T]) -> T {
    let mut le_plus_grand = liste[0];
 
    for &element in liste {
        if element > le_plus_grand {
            le_plus_grand = element;
        }
    }
 
    le_plus_grand
}