Skip to content

unnecessary_unwrap: should not trigger if the is_some is just part of the conditional #4530

Open
@nrc

Description

@nrc

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 ifs.

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-enhancementCategory: Enhancement of lints, like adding more cases or adding help messagesL-suggestionLint: Improving, adding or fixing lint suggestions

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions