There is a thing I don't understand with error handling. The ehal output trait has signatures like: ``` fn set_high(&mut self) -> Result<(), Self::Error> ``` But embassy gpio which implements this trait has signatures like: ``` pub fn set_high(&mut self) {} ``` How is that possible?