RS.CLIPPY.MAP_UNWRAP_OR
Using `.map(f).unwrap_or(a)` or `.map(f).unwrap_or_else(func)`, which are more succinctly expressed as `map_or(a, f)` or `map_or_else(a, f)`
This checker is a Clippy lint created by The Rust Project Contributors. The documentation shown here is a copy of the original documentation for: map_unwrap_or. Copyright ©2025 The Rust Team. All rights reserved.
What it does
Checks for usage of option.map(_).unwrap_or(_) or option.map(_).unwrap_or_else(_) or
result.map(_).unwrap_or_else(_).
Why is this bad?
Readability, these can be written more concisely (resp.) as
option.map_or(_, _), option.map_or_else(_, _) and result.map_or_else(_, _).
Known problems
The order of the arguments is not in execution order
Examples
option.map(|a| a + 1).unwrap_or(0);
option.map(|a| a > 10).unwrap_or(false);
result.map(|a| a + 1).unwrap_or_else(some_function);
Use instead:
option.map_or(0, |a| a + 1);
option.is_some_and(|a| a > 10);
result.map_or_else(some_function, |a| a + 1);
Past names
- option_map_unwrap_or
- option_map_unwrap_or_else
- result_map_unwrap_or_else
Configuration
-
msrv: The minimum rust version that the project supports. Defaults to therust-versionfield inCargo.toml(default:
current version)