E0276 - Error codes index
Description: Book listing all Rust error codes

# Error code E0276

A trait implementation has stricter requirements than the trait definition.

Erroneous code example:

    #![allow(unused)]
    fn main() {
    trait Foo {
        fn foo<T>(x: T);
    }

    impl Foo for bool {
        fn foo<T>(x: T) where T: Copy {}
    }
    }

Here, all types implementing `Foo` must have a method `foo<T>(x: T)` which can take any type `T`. However, in the `impl` for `bool`, we have added an extra bound that `T` is `Copy`, which isn't compatible with the original trait.

Consider removing the bound from the method or adding the bound to the original method definition in the trait.