error[E0623]: lifetime mismatch --> $DIR/hrlt-implied-trait-bounds-guard.rs:29:29 | LL | fn badboi<'in_, 'out, T>(x: Foo<'in_, 'out, T>, sadness: &'in_ T) -> &'out T { | ^^^^^^^^^^^^^^^^^^ ------- | | | this parameter and the return type are declared with different lifetimes... | ...but data from `x` is returned here error[E0623]: lifetime mismatch --> $DIR/hrlt-implied-trait-bounds-guard.rs:35:30 | LL | fn badboi2<'in_, 'out, T>(x: Foo<'in_, 'out, T>, sadness: &'in_ T) { | ^^^^^^^^^^^^^^^^^^ | | | this type is declared with multiple lifetimes... | ...but data with one lifetime flows into the other here error[E0623]: lifetime mismatch --> $DIR/hrlt-implied-trait-bounds-guard.rs:41:30 | LL | fn badboi3<'in_, 'out, T>(a: Foo<'in_, 'out, (&'in_ T, &'out T)>, sadness: &'in_ T) { | ^^^^^^^^^^^^^^^^^-------^^-------^^ | | | | | these two types are declared with different lifetimes... | ...but data from `a` flows into `a` here error: lifetime may not live long enough --> $DIR/hrlt-implied-trait-bounds-guard.rs:31:5 | LL | fn badboi<'in_, 'out, T>(x: Foo<'in_, 'out, T>, sadness: &'in_ T) -> &'out T { | ---- ---- lifetime `'out` defined here | | | lifetime `'in_` defined here LL | LL | sadness.cast() | ^^^^^^^^^^^^^^ function was supposed to return data with lifetime `'out` but it is returning data with lifetime `'in_` | = help: consider adding the following bound: `'in_: 'out` error: lifetime may not live long enough --> $DIR/hrlt-implied-trait-bounds-guard.rs:37:12 | LL | fn badboi2<'in_, 'out, T>(x: Foo<'in_, 'out, T>, sadness: &'in_ T) { | ---- ---- lifetime `'out` defined here | | | lifetime `'in_` defined here LL | LL | let _: &'out T = sadness.cast(); | ^^^^^^^ type annotation requires that `'in_` must outlive `'out` | = help: consider adding the following bound: `'in_: 'out` error: lifetime may not live long enough --> $DIR/hrlt-implied-trait-bounds-guard.rs:43:12 | LL | fn badboi3<'in_, 'out, T>(a: Foo<'in_, 'out, (&'in_ T, &'out T)>, sadness: &'in_ T) { | ---- ---- lifetime `'out` defined here | | | lifetime `'in_` defined here LL | LL | let _: &'out T = sadness.cast(); | ^^^^^^^ type annotation requires that `'in_` must outlive `'out` | = help: consider adding the following bound: `'in_: 'out` error: aborting due to 6 previous errors For more information about this error, try `rustc --explain E0623`.