Result and exceptions
Result<V, E> is used for when a method may fail, it can contain the result or an error. It is created via Ok() and Err()
fn get(idx: u32) -> Result<bool, usize> { if idx > 10 { Ok(true) } else if idx > 20 { Ok(false) } else { Err(404) } } fn main() { let result = get(10); match result { Ok(item) => println!("{}", item), Err(e) => println!("{}", e) } }
You can also do the equivalent of var!! with both Option and Result by using var.unwrap() and var.expect("some message"). Both methods will crash the app if it’s Err/None, expect() will also write the message to the console.
To avoid having to write unwrap() every time if you’re in a method that returns a Result you can just write var?, if var is an Err the method will return the Err immediately.
To crash a Rust program you should use panic!("message"). This will print the message and stacktrace to the command line.