But I'm unsure what my std::convert::From signature should look like to allow me to convert from T::Error to Error<T::Error> at the arrowed line above.
Should I be trying to implement std::convert::From in a generic way? Should I be adding a constraint to type Error inside Transport that makes implementers bring their own From?
I think there is no clear right or wrong answer here. Implementing From<T> for Error<T> generically is certainly an option. This of course won’t scale to a more complicated Error<T1, T2> with multiple variants like Transport. Another option to consider is also to just add .map_err(Error::Transport).