Clippy lints / Pedantic
Clippy lint · Pedantic · checked with Clippy 0.1.99
clippy::manual_let_else: Warn of cases where let...else could be used
What it meansWarn of cases where let...else could be used It is in the pedantic group and off by default.
Does it matter?
let...else provides a standard construct for this pattern that people can easily recognize. It’s also more compact.
Stricter lints with some false positives. Off by default; opt in with clippy::pedantic.
How to fix it
Clippy does not fix this one automatically (its suggestion may change behaviour, so it only shows it). Change the code by hand:
Flagged
let v = if let Some(v) = w { v } else { return };
Write this instead
let Some(v) = w else { return };
Turn it off, or on
It is off by default. To use it, set it to warn or deny:
Whole crate (Cargo.toml)
[lints.clippy]
manual_let_else = "warn"In code
#![warn(clippy::manual_let_else)]One run
cargo clippy -- -W clippy::manual-let-elseThe [lints] table needs Rust 1.74 or newer. In a workspace, put it under [workspace.lints.clippy] and add [lints] workspace = true to each member.
Settings in clippy.toml
matches-for-let-else: Whether the matches should be considered by the lint, and whether there should be filtering for common types.msrv: The minimum rust version that the project supports. Defaults to the rust-version field in Cargo.toml
Clippy's own documentation
What it does
Warn of cases where let...else could be used
Why is this bad?
let...else provides a standard construct for this pattern
that people can easily recognize. It’s also more compact.
Example
let v = if let Some(v) = w { v } else { return };
Could be written:
let Some(v) = w else { return };
Configuration
-
matches-for-let-else: Whether the matches should be considered by the lint, and whether there should be filtering for common types.(default:
"WellKnownTypes") -
msrv: The minimum rust version that the project supports. Defaults to therust-versionfield inCargo.toml(default:
current version)
From the Clippy lint list (0.1.99), part of the Rust project, MIT or Apache-2.0. Official entry.
Related lints
- too_many_linesChecks for functions with a large amount of lines
- missing_errors_docChecks the doc comments of publicly visible functions that return a Result type and warns if there is no # Errors section
- must_use_candidateChecks for public functions that have no #[must_use] attribute, but return something not already marked must-use, have no mutable arg and mutate no statics
- manual_instant_elapsedmanual implementation of `Instant::elapsed`
- manual_is_power_of_twomanually reimplementing `is_power_of_two`
- manual_is_variant_andChecks for usage of option.map(f).unwrap_or_default() and result.map(f).unwrap_or_default() where f is a function or closure that returns the bool type. Also checks for equality comparisons like option.map(f) == Some(true) and result.map(f) == Ok(true), as well as result.ok().is_some_and(f)
- manual_midpointChecks for manual implementation of midpoint
- manual_string_newempty String is being created manually
- many_single_char_names7 bindings with single-character names in scope
All 847 Clippy lints · Rust compiler errors · Cargo.toml checker
Up next
Related lintclippy::too_many_linesChecks for functions with a large amount of linesRead it next →Did this answer your question?