the way to fix semver hell is: - Make a `usb-device-trait` crate with *just* the trait that HALs have to impl. - HALs depend on just that, not `usb-device`. - maintain all usb class impls inside `usb-device` instead of making them separate crates.