Converting Error Types

The effective expansion of ? is a little more complicated than previously indicated:

expression?

works the same as

match expression { Ok(value) => value, Err(err) => return Err(From::from(err)), }

The From::from call here means we attempt to convert the error type to the type returned by the function: