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 :
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!");
}
Ok, ça roule :-)

Puis je teste autrement, avec :
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!");
}
Ça plante avec l'erreur :
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 :
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!");
}
Ok ça roule, ça dit juste que la variable n'est pas utilisé avec :
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.