#[derive(Debug)] struct Good(i32); #[derive(Debug)] struct Bad { i: u32, } fn func(v: Result) -> Result { match v { Ok(Good(v)) => Err(Bad { i: (v + 1) as u32 }), Err(Bad { i }) => Ok(Good((i + 1) as i32)), } } fn main() { let ok = func(Err(Bad { i: 1234 })); dbg!(ok); let err = func(Ok(Good(5678))); dbg!(err); println!(); }