# Error code E0643

This error indicates that there is a mismatch between generic parameters and impl Trait parameters in a trait declaration versus its impl.

    #![allow(unused)]
    fn main() {
    trait Foo {
        fn foo(&self, _: &impl Iterator);
    }
    impl Foo for () {
        fn foo<U: Iterator>(&self, _: &U) { } // error method `foo` has incompatible
                                              // signature for trait
    }
    }