error[E0195]: lifetime parameters do not match the trait definition --> $DIR/regions-bound-missing-bound-in-impl.rs:19:17 | LL | fn no_bound<'b:'a>(self, b: Inv<'b>) { | ^^ | = note: lifetime parameters differ in whether they are early- or late-bound note: `'b` differs between the trait and impl --> $DIR/regions-bound-missing-bound-in-impl.rs:10:17 | LL | pub trait Foo<'a, 't> { | --------------------- in this trait... LL | fn no_bound<'b>(self, b: Inv<'b>); | ^^ `'b` is late-bound ... LL | impl<'a, 't> Foo<'a, 't> for &'a isize { | -------------------------------------- in this impl... LL | fn no_bound<'b:'a>(self, b: Inv<'b>) { | ^^ -- this lifetime bound makes `'b` early-bound | | | `'b` is early-bound error[E0195]: lifetime parameters do not match the trait definition --> $DIR/regions-bound-missing-bound-in-impl.rs:23:18 | LL | fn has_bound<'b>(self, b: Inv<'b>) { | ^^ | = note: lifetime parameters differ in whether they are early- or late-bound note: `'b` differs between the trait and impl --> $DIR/regions-bound-missing-bound-in-impl.rs:11:18 | LL | pub trait Foo<'a, 't> { | --------------------- in this trait... LL | fn no_bound<'b>(self, b: Inv<'b>); LL | fn has_bound<'b:'a>(self, b: Inv<'b>); | ^^ -- this lifetime bound makes `'b` early-bound | | | `'b` is early-bound ... LL | impl<'a, 't> Foo<'a, 't> for &'a isize { | -------------------------------------- in this impl... ... LL | fn has_bound<'b>(self, b: Inv<'b>) { | ^^ `'b` is late-bound error[E0308]: method not compatible with trait --> $DIR/regions-bound-missing-bound-in-impl.rs:27:5 | LL | fn wrong_bound1<'b,'c,'d:'a+'c>(self, b: Inv<'b>, c: Inv<'c>, d: Inv<'d>) { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ lifetime mismatch | = note: expected signature `fn(&'a _, Inv<'c>, Inv<'c>, Inv<'_>)` found signature `fn(&'a _, Inv<'_>, Inv<'c>, Inv<'_>)` note: the lifetime `'c` as defined here... --> $DIR/regions-bound-missing-bound-in-impl.rs:27:24 | LL | fn wrong_bound1<'b,'c,'d:'a+'c>(self, b: Inv<'b>, c: Inv<'c>, d: Inv<'d>) { | ^^ note: ...does not necessarily outlive the lifetime `'c` as defined here --> $DIR/regions-bound-missing-bound-in-impl.rs:12:24 | LL | fn wrong_bound1<'b,'c,'d:'a+'b>(self, b: Inv<'b>, c: Inv<'c>, d: Inv<'d>); | ^^ error[E0308]: method not compatible with trait --> $DIR/regions-bound-missing-bound-in-impl.rs:27:5 | LL | fn wrong_bound1<'b,'c,'d:'a+'c>(self, b: Inv<'b>, c: Inv<'c>, d: Inv<'d>) { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ lifetime mismatch | = note: expected signature `fn(&'a _, Inv<'c>, Inv<'c>, Inv<'_>)` found signature `fn(&'a _, Inv<'_>, Inv<'c>, Inv<'_>)` note: the lifetime `'c` as defined here... --> $DIR/regions-bound-missing-bound-in-impl.rs:12:24 | LL | fn wrong_bound1<'b,'c,'d:'a+'b>(self, b: Inv<'b>, c: Inv<'c>, d: Inv<'d>); | ^^ note: ...does not necessarily outlive the lifetime `'c` as defined here --> $DIR/regions-bound-missing-bound-in-impl.rs:27:24 | LL | fn wrong_bound1<'b,'c,'d:'a+'c>(self, b: Inv<'b>, c: Inv<'c>, d: Inv<'d>) { | ^^ error[E0195]: lifetime parameters do not match the trait definition --> $DIR/regions-bound-missing-bound-in-impl.rs:42:30 | LL | fn wrong_bound2(self, b: Inv, c: Inv, d: Inv) { | ^^^ ^^^ | = note: lifetime parameters differ in whether they are early- or late-bound note: `'_` differs between the trait and impl --> $DIR/regions-bound-missing-bound-in-impl.rs:13:21 | LL | pub trait Foo<'a, 't> { | --------------------- in this trait... ... LL | fn wrong_bound2<'b,'c,'d:'a+'b>(self, b: Inv<'b>, c: Inv<'c>, d: Inv<'d>); | ^^ -- this lifetime bound makes `'b` early-bound | | | `'b` is early-bound ... LL | impl<'a, 't> Foo<'a, 't> for &'a isize { | -------------------------------------- in this impl... ... LL | fn wrong_bound2(self, b: Inv, c: Inv, d: Inv) { | ^^^ `'_` is late-bound note: `'_` differs between the trait and impl --> $DIR/regions-bound-missing-bound-in-impl.rs:13:27 | LL | pub trait Foo<'a, 't> { | --------------------- in this trait... ... LL | fn wrong_bound2<'b,'c,'d:'a+'b>(self, b: Inv<'b>, c: Inv<'c>, d: Inv<'d>); | ^^ -- this lifetime bound makes `'d` early-bound | | | `'d` is early-bound ... LL | impl<'a, 't> Foo<'a, 't> for &'a isize { | -------------------------------------- in this impl... ... LL | fn wrong_bound2(self, b: Inv, c: Inv, d: Inv) { | ^^^ `'_` is late-bound error[E0276]: impl has stricter requirements than trait --> $DIR/regions-bound-missing-bound-in-impl.rs:49:26 | LL | fn another_bound<'x: 'a>(self, x: Inv<'x>, y: Inv<'t>); | ------------------------------------------------------- definition of `another_bound` from trait ... LL | fn another_bound<'x: 't>(self, x: Inv<'x>, y: Inv<'t>) { | ^^ impl has extra requirement `'x: 't` error: aborting due to 6 previous errors Some errors have detailed explanations: E0195, E0276, E0308. For more information about an error, try `rustc --explain E0195`.