| A trait implementation has stricter requirements than the trait definition. | |
| Erroneous code example: | |
| ```compile_fail,E0276 | |
| 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. |