rust-lang/rust-clippy

`unnecessary_lazy_evaluations`: lint `{Option,Result}::map_or_else`

Open

#15829 opened on Oct 6, 2025

View on GitHub
 (14 comments) (0 reactions) (1 assignee)Rust (10,406 stars) (1,391 forks)batch import
C-enhancementgood first issue

Description

Description

None of the following currently get linted: (EDIT: this used to include map_or, but as the comments below rightfully say, its closure can't actually be made eager)

#![allow(unused)]
#![warn(clippy::unnecessary_lazy_evaluations)]

fn main() {
    let o = Some(42);
    o.map_or_else(|| 42, |_| 42);
    
    let r: Result<i32, i32> = Ok(42);
    r.map_or_else(|_| 42, |_| 42);
}

It would be cool if they did:

#![allow(unused)]
#![warn(clippy::unnecessary_lazy_evaluations)]

fn main() {
    let o = Some(42);
    o.map_or(42, |_| 42);
    
    let r: Result<i32, i32> = Ok(42);
    r.map_or(42, |_| 42);
}

Version

rustc 1.92.0-nightly (839222065 2025-10-05)
binary: rustc
commit-hash: 839222065a44ac21c15df68ed2f2f3c0127b0b8e
commit-date: 2025-10-05
host: x86_64-unknown-linux-gnu
release: 1.92.0-nightly
LLVM version: 21.1.2

Additional Labels

@rustbot label C-enhancement "good first issue"

Contributor guide