Runs $code and returns either the unwrapped result or binds the error to $err and executes
$or (or can then access the error using the identifier passed as $err)
Runs an expression and returns either the unwrapped result or creates a new error with the
returned error as sub-error and returns the new error (return Err(Error<T>))
Runs an expression and returns either the unwrapped result or converts the error into the
matching Error<T> (using a From-trait) and returns it (return Err(Error<T>))