1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
|
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`.
|