irrefutable_let_patterns should not lint at the start of an else if let-chain · Issue #128661 · rust-lang/rust (original) (raw)

Skip to content

Provide feedback

Saved searches

Use saved searches to filter your results more quickly

Sign up

Appearance settings

@Jarcho

Description

@Jarcho

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 } }