struct QualifiedError(E); impl From for QualifiedError where E: std::error::Error, T: From, { fn from(e: E) -> QualifiedError { QualifiedError(e.into()) } } fn infallible() -> Result<(), std::convert::Infallible> { Ok(()) } fn main() { let x = || -> Result<_, QualifiedError<_>> { infallible()?; Ok(()) //~^ ERROR type annotations needed }; }