i was trying to implement `core::error::Error` for an error type in my library.
this works fine:
```rust
impl<IN1Error: Debug, IN2Error: Debug, PWMError: Debug> core::fmt::Display for MotorError<IN1Error, IN2Error, PWMError> {
    fn fmt(&self, f: &mut Formatter<'_>) -> core::fmt::Result {
        write!(f, "{:?}", self)
    }
}

impl<IN1Error: Debug, IN2Error: Debug, PWMError: Debug> Error for MotorError<IN1Error, IN2Error, PWMError> {
}
```

since `core::error::Error` is still new and i doubt that any HAL already implements it i don't want to force the trait bound on the errors coming from the HAL. but i still thought it'd be nice to implement `cause` in case they do support it, so i've added a second `impl`:
```rust
impl<IN1Error: Debug + Error, IN2Error: Debug + Error, PWMError: Debug + Error> Error for MotorError<IN1Error, IN2Error, PWMError> {
    fn cause(&self) -> Option<&dyn Error> {
        match self {
            MotorError::InvalidSpeed => None,
            MotorError::In1Error(e) => Some(e),
            MotorError::In2Error(e) => Some(e),
            MotorError::PwmError(e) => Some(e),
        }
    }
}
```

sadly, this isn't working:
```
$ cargo build
   Compiling tb6612fng v0.2.0
error[E0119]: conflicting implementations of trait `core::error::Error` for type `MotorError<_, _, _>`
  --> src\lib.rs:47:1
   |
44 | impl<IN1Error: Debug, IN2Error: Debug, PWMError: Debug> Error for MotorError<IN1Error, IN2Error, PWMError> {
   | ---------------------------------------------------------------------------------------------------------- first implementation here
...
47 | impl<IN1Error: Debug + Error, IN2Error: Debug + Error, PWMError: Debug + Error> Error for MotorError<IN1Error, IN2Error, PWMError> {
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ conflicting implementation for `MotorError<_, _, _>`

For more information about this error, try `rustc --explain E0119`.
error: could not compile `tb6612fng` (lib) due to 1 previous error
```

is there any way to have two `impl` for the same `trait` on the same `enum`/`struct` depending on which traits the generics implement?