In my experience it's not quite as automatic as you'd hope. I always often to throw in stuff like `.map_err(Into::into)` or `Ok(foo?)` to convert the errors.
Not the end of the world but I do think defending the proliferation of error types in typical Rust projects is copium.