760f70312e
Treat different generic arguments as different types. Allow the lint to be ignored on the type definition, or any impl blocks.
68 lines
1.1 KiB
Rust
68 lines
1.1 KiB
Rust
#![allow(dead_code)]
|
|
#![warn(clippy::multiple_inherent_impl)]
|
|
|
|
struct MyStruct;
|
|
|
|
impl MyStruct {
|
|
fn first() {}
|
|
}
|
|
|
|
impl MyStruct {
|
|
fn second() {}
|
|
}
|
|
|
|
impl<'a> MyStruct {
|
|
fn lifetimed() {}
|
|
}
|
|
|
|
mod submod {
|
|
struct MyStruct;
|
|
impl MyStruct {
|
|
fn other() {}
|
|
}
|
|
|
|
impl super::MyStruct {
|
|
fn third() {}
|
|
}
|
|
}
|
|
|
|
use std::fmt;
|
|
impl fmt::Debug for MyStruct {
|
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
|
write!(f, "MyStruct {{ }}")
|
|
}
|
|
}
|
|
|
|
// issue #5772
|
|
struct WithArgs<T>(T);
|
|
impl WithArgs<u32> {
|
|
fn f1() {}
|
|
}
|
|
impl WithArgs<u64> {
|
|
fn f2() {}
|
|
}
|
|
impl WithArgs<u64> {
|
|
fn f3() {}
|
|
}
|
|
|
|
// Ok, the struct is allowed to have multiple impls.
|
|
#[allow(clippy::multiple_inherent_impl)]
|
|
struct Allowed;
|
|
impl Allowed {}
|
|
impl Allowed {}
|
|
impl Allowed {}
|
|
|
|
struct AllowedImpl;
|
|
#[allow(clippy::multiple_inherent_impl)]
|
|
impl AllowedImpl {}
|
|
// Ok, the first block is skipped by this lint.
|
|
impl AllowedImpl {}
|
|
|
|
struct OneAllowedImpl;
|
|
impl OneAllowedImpl {}
|
|
#[allow(clippy::multiple_inherent_impl)]
|
|
impl OneAllowedImpl {}
|
|
impl OneAllowedImpl {} // Lint, only one of the three blocks is allowed.
|
|
|
|
fn main() {}
|