Clippy lints / Correctness
Clippy lint · Correctness · checked with Clippy 0.1.99
clippy::min_max: Checks for expressions where std::cmp::min and max are used to clamp values, but switched so that the result is constant
What it meansChecks for expressions where std::cmp::min and max are used to clamp values, but switched so that the result is constant. It is in the correctness group and denied by default (the build fails).
Does it matter?
This is in all probability not the intended outcome. At the least it hurts readability of the code.
Code that is almost certainly wrong. Denied by default: the build fails until you fix it or allow it.
How to fix it
Clippy does not fix this one automatically. Change the code by hand:
Flagged
min(0, max(100, x))
// or
x.max(100).min(0)
Turn it off, or on
Allow it where it does not fit your code, as narrowly as you can:
On one item
#[allow(clippy::min_max)]
fn my_function() { /* ... */ }Whole crate (Cargo.toml)
[lints.clippy]
min_max = "allow"One run
cargo clippy -- -A clippy::min-maxThe [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.
Clippy's own documentation
What it does
Checks for expressions where std::cmp::min and max are
used to clamp values, but switched so that the result is constant.
Why is this bad?
This is in all probability not the intended outcome. At the least it hurts readability of the code.
Example
min(0, max(100, x))
// or
x.max(100).min(0)
It will always be equal to 0. Probably the author meant to clamp the value
between 0 and 100, but has erroneously swapped min and max.
From the Clippy lint list (0.1.99), part of the Rust project, MIT or Apache-2.0. Official entry.
Related lints
- lint_groups_priorityChecks for lint groups with the same priority as lints in the Cargo.toml [lints] table. This lint will be removed once cargo#12918 is resolved
- match_str_case_mismatchChecks for match expressions modifying the case of a string with non-compliant arms
- mem_replace_with_uninitChecks for mem::replace(&mut _, mem::uninitialized()) and mem::replace(&mut _, mem::zeroed())
- mistyped_literal_suffixesWarns for mistyped suffix in literals
- modulo_oneChecks for getting the remainder of integer division by one or minus one
- mut_from_refThis lint checks for functions that take immutable references and return mutable ones
All 847 Clippy lints · Rust compiler errors · Cargo.toml checker
Up next
Related lintclippy::lint_groups_priorityChecks for lint groups with the same priority as lints in the Cargo.toml [lints] table. This lint will be removed once cargo#12918 is resolvedRead it next →Did this answer your question?