```rust struct MyError { Foo, Bar, Uart(U), } struct MyDriver { uart: U } impl MyDriver { fn foo(&mut self) -> Result<(), MyError> { self.uart.read(..).map_err(MyError::Uart)?; Ok(()) } }