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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
|
fn soustraction_uint(x: Option<usize>, y: Option<usize>) -> Result<usize, &'static str> {
if let Some(x_val) = x {
if let Some(y_val) = y {
if x_val >= y_val {
return Ok(x_val - y_val)
}
else {
return Err("Différence négative")
}
}
else {
return Err("Le second terme est null")
}
}
else {
return Err("Le premier terme est null")
}
}
fn main() {
let x: Option<usize>= Some(5);
let y: Option<usize>= Some(4);
let x_moins_y_res: Result<usize, &'static str> = soustraction_uint(x, y);
match x_moins_y_res {
Ok(d) => println!("x - y = {}", d), // Le code va ici.
Err(msg) => eprintln!("La soustraction n'a pas pu se faire : {}", msg)
}
// Récupération de la valeur
let x_moins_y: Option<usize> = match soustraction_uint(x, y) {
Ok(d) => Some(d),
Err(msg) => None
};
match x_moins_y {
Some(d) => println!("x - y = {}", d), // Le code va ici.
None => eprintln!("Différence null.")
}
let x: Option<usize>= Some(5);
let y: Option<usize>= Some(9);
let x_moins_y_res: Result<usize, &'static str> = soustraction_uint(x, y);
match x_moins_y_res {
Ok(d) => println!("x - y = {}", d),
Err(msg) => eprintln!("La soustraction n'a pas pu se faire : {}", msg) // Le code va ici.
}
match soustraction_uint(None, y) {
Ok(d) => println!("x - y = {}", d),
Err(msg) => eprintln!("La soustraction n'a pas pu se faire : {}", msg) // Le code va ici.
}
match soustraction_uint(x, None) {
Ok(d) => println!("x - y = {}", d),
Err(msg) => eprintln!("La soustraction n'a pas pu se faire : {}", msg) // Le code va ici.
}
} |
Partager