Bonjour,
Je continue mon petit chemin avec Rust à l’aide du book. En cherchant à me renseigner un peu plus sur l’enum option
je me suis embrouillé en essayant de comparer des références vers des str
. En bidouillant un peu, j’ai réussi à trouver deux fonctions qui me donne le même résultat :
fn main() {
let names = ["Louis", "Marie", "Pierre", "Apolline"];
match find_index(&names, "Pierre") {
Some(value) => println!("Index: {}", value),
None => println!("Name not found.")
}
match find_index_(&names, "Pierre") {
Some(value) => println!("Index: {}", value),
None => println!("Name not found.")
}
}
fn find_index(data: &[&str], element: &str) -> Option<usize> {
for (i, &name) in data.iter().enumerate() {
if name == element {
return Some(i);
}
}
return None;
}
// Même résultat avec la fonction suivante :
fn find_index_(data: &[&str], element: &str) -> Option<usize> {
for (i, name) in data.iter().enumerate() {
if name == &element {
return Some(i);
}
}
return None;
}
Quand je reçois element
dans ma fonction, c’est bien déjà une référence non ? Alors pourquoi je dois faire &element
? De même pour &name
. Je me rend bien compte que la logique des deux fonctions est quasiment la même mais j’ai du mal à l’interpréter.
Merci pour votre aide !
+0
-0