* In reply to @andresovela:matrix.org Then I have a BSP struct that looks like this: pub struct Ui { io_expander: Aw9523b, } The question would be, how can I name E in my impl for Ui? impl Ui where embedded_hal_async::i2c::I2c, { pub async fn initialize(&mut self) -> Result<(), Error> { // Stuff } } E is no longer generic. You've named the generic type `I2C` to be I2cDeviceOnSharedBus and you previously defined E to be equal to ::Error so you can just substitute the generic that you've named and you get ::Error which is just a single type. So get rid of the E generic on your impl block and just replace it with that