error[E0521]: borrowed data escapes outside of function
  --> $DIR/impl-on-dyn-trait-with-implicit-static-bound.rs:21:9
   |
LL |     fn use_it<'a, T>(val: &'a dyn ObjectTrait<T>) -> impl OtherTrait<'a> + 'a {
   |               --     --- `val` is a reference that is only valid in the function body
   |               |
   |               lifetime `'a` defined here
LL |         val.use_self::<T>()
   |         ^^^^^^^^^^^^^^^^^^^
   |         |
   |         `val` escapes the function body here
   |         argument requires that `'a` must outlive `'static`
   |
note: the used `impl` has a `'static` requirement
  --> $DIR/impl-on-dyn-trait-with-implicit-static-bound.rs:15:32
   |
LL |     impl<T> MyTrait<T> for dyn ObjectTrait<T> {
   |                                ^^^^^^^^^^^^^^ this has an implicit `'static` lifetime requirement
LL |         fn use_self<K>(&self) -> &() { panic!() }
   |            -------- calling this method introduces the `impl`'s `'static` requirement
help: consider relaxing the implicit `'static` requirement
   |
LL |     impl<T> MyTrait<T> for dyn ObjectTrait<T> + '_ {
   |                                               ++++

error[E0521]: borrowed data escapes outside of function
  --> $DIR/impl-on-dyn-trait-with-implicit-static-bound.rs:72:9
   |
LL |     fn use_it<'a>(val: &'a dyn ObjectTrait) -> impl OtherTrait<'a> + 'a {
   |               --  --- `val` is a reference that is only valid in the function body
   |               |
   |               lifetime `'a` defined here
LL |         val.use_self()
   |         ^^^^^^^^^^^^^^
   |         |
   |         `val` escapes the function body here
   |         argument requires that `'a` must outlive `'static`
   |
note: the used `impl` has a `'static` requirement
  --> $DIR/impl-on-dyn-trait-with-implicit-static-bound.rs:67:14
   |
LL |     impl dyn ObjectTrait {
   |              ^^^^^^^^^^^ this has an implicit `'static` lifetime requirement
LL |         fn use_self(&self) -> &() { panic!() }
   |            -------- calling this method introduces the `impl`'s `'static` requirement
help: consider relaxing the implicit `'static` requirement
   |
LL |     impl dyn ObjectTrait + '_ {
   |                          ++++

error[E0521]: borrowed data escapes outside of function
  --> $DIR/impl-on-dyn-trait-with-implicit-static-bound.rs:92:9
   |
LL |     fn use_it<'a>(val: &'a dyn ObjectTrait) -> impl OtherTrait<'a> {
   |               --  --- `val` is a reference that is only valid in the function body
   |               |
   |               lifetime `'a` defined here
LL |         val.use_self()
   |         ^^^^^^^^^^^^^^
   |         |
   |         `val` escapes the function body here
   |         argument requires that `'a` must outlive `'static`
   |
note: the used `impl` has a `'static` requirement
  --> $DIR/impl-on-dyn-trait-with-implicit-static-bound.rs:89:26
   |
LL |         fn use_self(&self) -> &() { panic!() }
   |            -------- calling this method introduces the `impl`'s `'static` requirement
...
LL |     impl MyTrait for dyn ObjectTrait {}
   |                          ^^^^^^^^^^^ this has an implicit `'static` lifetime requirement
help: consider relaxing the implicit `'static` requirement
   |
LL |     impl MyTrait for dyn ObjectTrait + '_ {}
   |                                      ++++

error[E0521]: borrowed data escapes outside of function
  --> $DIR/impl-on-dyn-trait-with-implicit-static-bound.rs:112:9
   |
LL |     fn use_it<'a>(val: &'a dyn ObjectTrait) -> impl OtherTrait<'a> + 'a {
   |               --  --- `val` is a reference that is only valid in the function body
   |               |
   |               lifetime `'a` defined here
LL |         MyTrait::use_self(val)
   |         ^^^^^^^^^^^^^^^^^^^^^^
   |         |
   |         `val` escapes the function body here
   |         argument requires that `'a` must outlive `'static`
   |
note: the used `impl` has a `'static` requirement
  --> $DIR/impl-on-dyn-trait-with-implicit-static-bound.rs:108:26
   |
LL |         fn use_self(&self) -> &() { panic!() }
   |            -------- calling this method introduces the `impl`'s `'static` requirement
...
LL |     impl MyTrait for dyn ObjectTrait {}
   |                          ^^^^^^^^^^^ this has an implicit `'static` lifetime requirement
help: consider relaxing the implicit `'static` requirement
   |
LL |     impl MyTrait for dyn ObjectTrait + '_ {}
   |                                      ++++

error[E0521]: borrowed data escapes outside of function
  --> $DIR/impl-on-dyn-trait-with-implicit-static-bound.rs:38:9
   |
LL |     fn use_it<'a>(val: &'a dyn ObjectTrait) -> &'a () {
   |               --  --- `val` is a reference that is only valid in the function body
   |               |
   |               lifetime `'a` defined here
LL |         val.use_self()
   |         ^^^^^^^^^^^^^^
   |         |
   |         `val` escapes the function body here
   |         argument requires that `'a` must outlive `'static`
   |
note: the used `impl` has a `'static` requirement
  --> $DIR/impl-on-dyn-trait-with-implicit-static-bound.rs:32:26
   |
LL |     impl MyTrait for dyn ObjectTrait {
   |                          ^^^^^^^^^^^ this has an implicit `'static` lifetime requirement
LL |         fn use_self(&self) -> &() { panic!() }
   |            -------- calling this method introduces the `impl`'s `'static` requirement
help: consider relaxing the implicit `'static` requirement
   |
LL |     impl MyTrait for dyn ObjectTrait + '_ {
   |                                      ++++

error[E0521]: borrowed data escapes outside of function
  --> $DIR/impl-on-dyn-trait-with-implicit-static-bound.rs:56:9
   |
LL |     fn use_it<'a>(val: &'a Box<dyn ObjectTrait + 'a>) -> &'a () {
   |               --  --- `val` is a reference that is only valid in the function body
   |               |
   |               lifetime `'a` defined here
LL |         val.use_self()
   |         ^^^^^^^^^^^^^^
   |         |
   |         `val` escapes the function body here
   |         argument requires that `'a` must outlive `'static`
   |
note: the used `impl` has a `'static` requirement
  --> $DIR/impl-on-dyn-trait-with-implicit-static-bound.rs:50:30
   |
LL |     impl MyTrait for Box<dyn ObjectTrait> {
   |                              ^^^^^^^^^^^ this has an implicit `'static` lifetime requirement
LL |         fn use_self(&self) -> &() { panic!() }
   |            -------- calling this method introduces the `impl`'s `'static` requirement
help: consider relaxing the implicit `'static` requirement
   |
LL |     impl MyTrait for Box<dyn ObjectTrait + '_> {
   |                                          ++++

error: aborting due to 6 previous errors

For more information about this error, try `rustc --explain E0521`.
