#![feature(tool_lints)] #![warn(clippy::absurd_extreme_comparisons)] #![allow(unused, clippy::eq_op, clippy::no_effect, clippy::unnecessary_operation, clippy::needless_pass_by_value)] fn main() { const Z: u32 = 0; let u: u32 = 42; u <= 0; u <= Z; u < Z; Z >= u; Z > u; u > std::u32::MAX; u >= std::u32::MAX; std::u32::MAX < u; std::u32::MAX <= u; 1-1 > u; u >= !0; u <= 12 - 2*6; let i: i8 = 0; i < -127 - 1; std::i8::MAX >= i; 3-7 < std::i32::MIN; let b = false; b >= true; false > b; u > 0; // ok // this is handled by clippy::unit_cmp () < {}; } use std::cmp::{Ordering, PartialEq, PartialOrd}; #[derive(PartialEq, PartialOrd)] pub struct U(u64); impl PartialEq for U { fn eq(&self, other: &u32) -> bool { self.eq(&U(u64::from(*other))) } } impl PartialOrd for U { fn partial_cmp(&self, other: &u32) -> Option { self.partial_cmp(&U(u64::from(*other))) } } pub fn foo(val: U) -> bool { val > std::u32::MAX } pub fn bar(len: u64) -> bool { // This is OK as we are casting from target sized to fixed size len >= std::usize::MAX as u64 }