// Result-returning functions, Ok/Err construction, and matching on both. #[derive(Debug, PartialEq)] enum Error { TooBig, } fn halve(n: i32) -> Result { if n > 100 { Err(Error::TooBig) } else { Ok(n / 2) } } fn main() { for n in [10, 200] { match halve(n) { Ok(v) => println!("ok {}", v), Err(e) => println!("err {:?}", e), } } println!("{:?}", halve(8)); println!("{}", halve(8).unwrap()); println!("{} {}", halve(8).is_ok(), halve(500).is_err()); }