Bonjour,
Quelqu'un peut-il m'expliquer à quoi ça sert ? Comment ça marche ? Merci Beaucoup.
Car je lis la doc ici :
https://doc.rust-lang.org/book/functions.html
Je comprends que ça dit simplement que la fonction ne retourne pas de valeur, ok.
Je teste l'exemple :
Ok, ça roule :-)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 fn main() { diverges(); } fn diverges() -> ! { panic!("This function never returns!"); }
Puis je teste autrement, avec :
Ça plante avec l'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 fn main() { diverges(); } fn diverges() -> ! { println!("This function never returns!"); }
error: computation may converge in a function marked as diverging [E0270]
Je n'ai pas compris, j'ai bien le point-virgule comme l'instruction ne se retournera pas.
Puis plus bas c'est encore plus bizarre, ça dit que la fonction divergente peut prendre n'importe quels types en retour !!!
L'exemple repris :
Ok ça roule, ça dit juste que la variable n'est pas utilisé avec :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 fn main() { let x:i32 = diverges(); } fn diverges() -> ! { panic!("This function never returns!"); }
warning: unused variable: `x`, #[warn(unused_variables)] on by default
Mais j'ai toujours pas compris l’intérêt de ce truc !!!
Donc ça sert à quoi !? Merci.
Partager