[Rust] Gestion des erreurs
Bonjour/bonsoir je suis en apprentissage du langage Ruse mais j'ai du mal dans la gestion des erreurs exemple :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
type MathResult = Result<f64, MathError>;
fn div(x: f64, y: f64) -> MathResult {
if y == 0.0 {
// This operation would `fail`, instead let's return the reason of
// the failure wrapped in `Err`
Err(MathError::DivisionByZero)
} else {
// This operation is valid, return the result wrapped in `Ok`
Ok(x / y)
}
}
enum MathError {
DivisionByZero,
NegativeLogarithm,
NegativeSquareRoot,
}
fn main(){
div(10.0,20.0);
} |
Si je comprends bien Ok et Err renvoient un objet de type Result mais je me suis demandé d'ou venais ces fonctions.
Sur la documentation j'ai vu que le type Result<T, E> était un enum je ne sais pas complètement ce que c'est mais j'ai vu ça :
Code:
1 2 3 4 5
|
enum Result<T, E> {
Ok(T),
Err(E)
} |
Je voudrais savoir en détail comment utiliser ces enum et la gestion des erreur que je ne comprends pas trop si je n'ai pas trop précisé certaine choses vous pouvez me demander en commentaire.
Merci cordialement unoomad.