| #![warn(clippy::missing_trait_methods)] | |
| #![expect(clippy::needless_lifetimes)] | |
| #![allow(clippy::derive_ord_xor_partial_ord)] | |
| trait A { | |
| fn provided() {} | |
| } | |
| trait B { | |
| fn required(); | |
| fn a(_: usize) -> usize { | |
| 1 | |
| } | |
| fn b<'a, T: AsRef<[u8]>>(a: &'a T) -> &'a [u8] { | |
| a.as_ref() | |
| } | |
| } | |
| struct Partial; | |
| impl A for Partial {} | |
| //~^ missing_trait_methods | |
| impl B for Partial { | |
| //~^ missing_trait_methods | |
| fn required() {} | |
| fn a(_: usize) -> usize { | |
| 2 | |
| } | |
| } | |
| struct Complete; | |
| impl A for Complete { | |
| fn provided() {} | |
| } | |
| impl B for Complete { | |
| fn required() {} | |
| fn a(_: usize) -> usize { | |
| 2 | |
| } | |
| fn b<T: AsRef<[u8]>>(a: &T) -> &[u8] { | |
| a.as_ref() | |
| } | |
| } | |
| trait MissingMultiple { | |
| fn one() {} | |
| fn two() {} | |
| fn three() {} | |
| } | |
| impl MissingMultiple for Partial {} | |
| //~^ missing_trait_methods | |
| //~| missing_trait_methods | |
| //~| missing_trait_methods | |
| fn main() {} | |
| //~v missing_trait_methods | |
| impl PartialEq<Partial> for Partial { | |
| fn eq(&self, other: &Partial) -> bool { | |
| todo!() | |
| } | |
| } | |
| #[clippy::msrv = "1.20.0"] | |
| fn msrv0() { | |
| #[derive(PartialEq, Eq, PartialOrd)] | |
| struct S {} | |
| impl Ord for S { | |
| fn cmp(&self, other: &S) -> std::cmp::Ordering { | |
| unreachable!() | |
| } | |
| } | |
| } | |
| #[clippy::msrv = "1.21.0"] | |
| fn msrv1() { | |
| #[derive(PartialEq, Eq, PartialOrd)] | |
| struct S {} | |
| impl Ord for S { | |
| //~^ missing_trait_methods | |
| //~| missing_trait_methods | |
| fn cmp(&self, other: &S) -> std::cmp::Ordering { | |
| unreachable!() | |
| } | |
| } | |
| } |