# Error code E0195

The lifetime parameters of the method do not match the trait declaration.

Erroneous code example:

    #![allow(unused)]
    fn main() {
    trait Trait {
        fn bar<'a,'b:'a>(x: &'a str, y: &'b str);
    }

    struct Foo;

    impl Trait for Foo {
        fn bar<'a,'b>(x: &'a str, y: &'b str) {
        // error: lifetime parameters or bounds on method `bar`
        // do not match the trait declaration
        }
    }
    }

The lifetime constraint `'b` for `bar()` implementation does not match the trait declaration. Ensure lifetime declarations match exactly in both trait declaration and implementation. Example:

    #![allow(unused)]
    fn main() {
    trait Trait {
        fn t<'a,'b:'a>(x: &'a str, y: &'b str);
    }

    struct Foo;

    impl Trait for Foo {
        fn t<'a,'b:'a>(x: &'a str, y: &'b str) { // ok!
        }
    }
    }