4 ms·
The `Result` type has a `map_err` method to which you can pass a function (or closure) to modify the error, so you can write something like... ``` let (val1, v
by maffydub 5y ago
The `Result` type has a `map_err` method to which you can pass a function (or closure) to modify the error, so you can write something like...
```
let (val1, val2) = baz()
.map_err(|err| add_my_context(err, "some context"))?;
```
Also, the `?` operator automatically calls `into()` on the error that it was given, which will convert it into the desired error type (assuming there's a conversion implemented for it), so you only need the `map_err()` approach when you need to add context.
I'm not sure what the idiomatic Rust way of logging before returning the error is - in the code I've written (and read), you'd add return the error with added context and leave the handler to decide whether to log.
In my experience, it is pretty ergonomic.