# Error code E0276

A trait implementation has stricter requirements than the trait definition.

Erroneous code example:

ⓘ

    trait Foo {
        fn foo<T>(x: T);
    }

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

Run

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.

Back to list of error codes