Result, Something might succeed or maybe not
Similar to Option, Result is also an enum with signature:
enum Result<T, E>{
OK(T),
Err(E),
}
Result and Option are often seen together, consider the scenario of a connecting to a web server, we write a function to to connect, if connection fails or not - we have a Result and after connecting we might not have a data might not exist, Option - a case of Option wrapped in Result.
Just like Option result has function that help confirm results if it's an error or if it's OK.
is_ok()is_err()
Just like any generic OK and Err can be of any type, String is mostly use as Err type, returning why a function or operation failed.
fn main(){
println!("{:?}",is_even(4).unwrap());
}
fn is_even(value: i32) -> Result<bool, String>{
match value % 2 {
0 => Ok(true),
_ => Err(format!("Sorry, got a {}", value))
}
}
But just as with option we can't unwrap an Err, we can handle that with an if else statement or a match