In my library I have a structure similar to this:
use external_crate::External;
pub trait Marker { }
pub struct Wrap<T>(pub T);
impl<T: Marker> External for Wrap<T> { /* ... */ }
impl<T: External> External for Wrap<T> { /* ... */ }
This generates a conflicting trait impl on Wrap<_>. Ideally, I would have the error passed down to the library user if T impls both Marker and External. Are there any workarounds for this?
My goal is for my users to be able to mark some T as Marker and have an impl sort of generated for it for External, or be able to manually impl External themselves. External is tedious to implement manually, so I want to be able to write a kind of "default" impl which users can opt-in to