To recap the tradeoffs: - In favor of `&mut self`: - Better for impls (we do have one practical example of this). - Consistency with all other traits, which do `&mut self`. - Consistency with how I2C, SPI sharing works: we layer RefCell on top of the traits, not make the traits require `&self`. - In favor of `&self`: - Better for drivers in theory (we haven't found any driver in the wild where it makes a difference though). - If HALs add an inherent method that takes `&self` and the trait takes `&mut self`, the autoderef rules can sometimes cause the trait method to be preferred, which is likely not what the user wants.