#![allow(dead_code, deprecated, unused_variables, unused_mut)] fn sq(x: u32) -> Result { Ok(x * x) } fn err(x: u32) -> Result { Err(x) } fn main() { assert_eq!(Ok(2).or_else(sq).or_else(sq), Ok(2)); assert_eq!(Ok(2).or_else(err).or_else(sq), Ok(2)); assert_eq!(Err(3).or_else(sq).or_else(err), Ok(9)); assert_eq!(Err(3).or_else(err).or_else(err), Err(3)); }