#![deny(clippy::type_repetition_in_bounds)] use std::ops::{Add, AddAssign, Div, DivAssign, Mul, MulAssign, Sub, SubAssign}; pub fn foo(_t: T) where T: Copy, T: Clone, { unimplemented!(); } pub fn bar(_t: T, _u: U) where T: Copy, U: Clone, { unimplemented!(); } // Threshold test (see #4380) trait LintBounds where Self: Clone, Self: Copy + Default + Ord, Self: Add + AddAssign + Sub + SubAssign, Self: Mul + MulAssign + Div + DivAssign, { } trait LotsOfBounds where Self: Clone + Copy + Default + Ord, Self: Add + AddAssign + Sub + SubAssign, Self: Mul + MulAssign + Div + DivAssign, { } // Generic distinction (see #4323) mod issue4323 { pub struct Foo(A); pub struct Bar { a: Foo, b: Foo, } impl Unpin for Bar where Foo: Unpin, Foo: Unpin, { } } // Extern macros shouldn't lint (see #4326) extern crate serde; mod issue4326 { use serde::{Deserialize, Serialize}; trait Foo {} impl Foo for String {} #[derive(Debug, Serialize, Deserialize)] struct Bar where S: Foo, { foo: S, } } // Issue #7360 struct Foo where T: Clone, U: Clone, { t: T, u: U, } // Check for the `?` in `?Sized` pub fn f() where T: Clone, { } pub fn g() where T: ?Sized, { } // This should not lint fn impl_trait(_: impl AsRef, _: impl AsRef) {} fn main() {}