diondokter[m]: > <@diondokter:matrix.org> What do you mean your crate can't be used anymore?
> 
> I assume you have your own error type?
> 
> ```rust
> enum Error<HAL_ERROR> {
>     Hal(HAL_ERROR),
> }
> 
> impl<HAL_ERROR: core::error::Error> core::error::Error for Error<HAL_ERROR> {
>     // ...
> }
> ```
> 
> Just do this. Your error will implement the trait if the embedded-hal error also implements it

i've done it like this, that works: https://github.com/rust-embedded-community/tb6612fng-rs/pull/51/commits/f93d2e8122f1217031fc9800349ab3affbe7b561

but as written: i cannot implement `cause` if i'm not enforcing the HAL errors to also implement `core::error::Error`. and if i do that then my implementation of the `Error` trait is useless without the HALs also implementing it as the trait bound will not be satisfied for the `impl`
but yeah, the crate can still be used, just not the `Error` part (for a moment i thought that it wouldn't compile at all, but of course it still compiles as long as you don't want to use the `Error` trait impl). so i guess it'd be ok and anyone wanting to use the `Error` trait impl can "just" implement it in the HAL and then use the updated HAL?