I have a Config struct which can be a little bit daunting to use at first. In most cases, users (in particular new users) will only use a tiny subset of Config, and different users will use different small subsets of it.
I wanted to experiment with a few simpler, special-purpose, structs that can be converted into Config.
I figured I'd try using TryInto<Config> for this. All configurations end up as a Config in the end, but the factory function can take in other types, such as PlainTextServer. This works great, apart from trying to actually use the Config as an input. If I understand it correctly: When Config is passed in to a TryInto<Config> it ends up using the Infallible as the Error type, which is a mismatch with the type I explicitly specify as crate::err::Error.
I know I can work around this by introducing a custom IntoConfig trait, but is there a way to express the Error bound such that I can keep using TryInfo<Config> (for Config as input)?