rust-clippy
rust-clippy copied to clipboard
unnecessary_unwrap: should not trigger if the `is_some` is just part of the conditional
unnecessary_unwrap
recommends that foo.is_some()
in a conditional followed by foo.unwrap()
should be replaced by an if let
. That is usually good advice, however, if the is_some
is just part of the conditional, then the only way to use if let
is with nested if
s.
E.g.,
if some_condition && foo.is_some() {
let foo = foo.unwrap();
...
}
can only be rewritten as
if some_condition {
if let Some(foo) = foo {
...
}
}
which is not much of an improvement (and arguably no improvement at all). (In this case, using match
might be better, but in some more complex examples it is not possible).
I would much prefer is unnecessary_unwrap
only triggered when it was possible to rewrite exactly using a single if let
or match
.
Since chaining if lets in a condition already works on nightly, we can just wait until that hits stable and suggest the chained condition instead.
But until then this seems like an OK fix
triage: it seems the let_chains
feature has not been stabilized yet.
let_chains
is riding the train to stable and is expected to be in Rust 1.64 🚀 : https://github.com/rust-lang/rust/pull/94927
I just ran into this issue.
let-chains
got reverted from Rust 1.64 and as far as I can tell there is no timeline for stabilization
Since let chains have not landed in 4 years, could this be fixed in clippy after all?