Looks like it conflicts with the impl of From<T> for T from std, because as far as the compiler knows, <T as Foo>::Bar could be Error<T> itself.
Hmm... I guess that would technically be impossible, because then Error<T> would be an unconditionally recursive type (trying it got me the error overflow evaluating the requirement `Error<K>: std::marker::Sized` ). But I don't think the compiler includes that as part of its reasoning about conflicting impls.