irrefutable_let_patterns
should not lint at the start of an else if
let-chain · Issue #128661 · rust-lang/rust (original) (raw)
Navigation Menu
- Explore
- Pricing
Provide feedback
Saved searches
Use saved searches to filter your results more quickly
Appearance settings
Description
The following triggers irrefutable_let_patterns
:
fn expensive() -> u32 { 0 }
fn option(x: u32) -> Option { Some(x) }
fn f(x: bool) {
if x {
// something
} else if let foo = expensive()
&& let Some(bar) = option(foo)
{
// use foo
and bar
} else {
// something
}
}
Though let foo = expensive()
is irrefutable, it would add an extra layer of nesting to move it into a regular let
statement. e.g.
if x {
// something
} else {
let foo = expensive()
if let Some(bar) = option(foo) {
// use foo
and bar
} else {
// something
}
}