rust-lang/rust-clippy

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

Open

#15 829 ouverte le 6 oct. 2025

Voir sur GitHub
 (14 commentaires) (0 réactions) (1 assigné)Rust (1 391 forks)batch import
C-enhancementgood first issue

Métriques du dépôt

Stars
 (10 406 stars)
Métriques de merge PR
 (Merge moyen 16j 6h) (79 PRs mergées en 30 j)

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"

Guide contributeur