it's been a while since I have touched `async`. Searching isn't much help here, are these warnings at all relevant for embedded? ``` warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified --> src/lib.rs:1034:5 | 1034 | async fn read_regs(&mut self, reg: u8, buf: &mut [u8]) -> Result<(), Self::Error>; | ^^^^^ | = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` = note: `#[warn(async_fn_in_trait)]` on by default help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change | 1034 - async fn read_regs(&mut self, reg: u8, buf: &mut [u8]) -> Result<(), Self::Error>; 1034 + fn read_regs(&mut self, reg: u8, buf: &mut [u8]) -> impl std::future::Future> + Send; | ```