error: lifetime may not live long enough
  --> $DIR/ref-assoc-async.rs:19:9
   |
LL |     async fn ref_AssocType(self: &<Struct as Trait>::AssocType, f: &u32) -> &u32 {
   |                                  -                                 - let's call the lifetime of this reference `'1`
   |                                  |
   |                                  let's call the lifetime of this reference `'2`
LL |         f
   |         ^ method was supposed to return data with lifetime `'2` but it is returning data with lifetime `'1`
   |
help: consider introducing a named lifetime parameter and update trait if needed
   |
LL |     async fn ref_AssocType<'a>(self: &<Struct as Trait>::AssocType, f: &'a u32) -> &'a u32 {
   |                           ++++                                          ++          ++

error: lifetime may not live long enough
  --> $DIR/ref-assoc-async.rs:24:9
   |
LL |     async fn box_ref_AssocType(self: Box<&<Struct as Trait>::AssocType>, f: &u32) -> &u32 {
   |                                          -                                  - let's call the lifetime of this reference `'1`
   |                                          |
   |                                          let's call the lifetime of this reference `'2`
LL |         f
   |         ^ method was supposed to return data with lifetime `'2` but it is returning data with lifetime `'1`
   |
help: consider introducing a named lifetime parameter and update trait if needed
   |
LL |     async fn box_ref_AssocType<'a>(self: Box<&<Struct as Trait>::AssocType>, f: &'a u32) -> &'a u32 {
   |                               ++++                                               ++          ++

error: lifetime may not live long enough
  --> $DIR/ref-assoc-async.rs:29:9
   |
LL |     async fn pin_ref_AssocType(self: Pin<&<Struct as Trait>::AssocType>, f: &u32) -> &u32 {
   |                                          -                                  - let's call the lifetime of this reference `'1`
   |                                          |
   |                                          let's call the lifetime of this reference `'2`
LL |         f
   |         ^ method was supposed to return data with lifetime `'2` but it is returning data with lifetime `'1`
   |
help: consider introducing a named lifetime parameter and update trait if needed
   |
LL |     async fn pin_ref_AssocType<'a>(self: Pin<&<Struct as Trait>::AssocType>, f: &'a u32) -> &'a u32 {
   |                               ++++                                               ++          ++

error: lifetime may not live long enough
  --> $DIR/ref-assoc-async.rs:34:9
   |
LL |     async fn box_box_ref_AssocType(self: Box<Box<&<Struct as Trait>::AssocType>>, f: &u32) -> &u32 {
   |                                                  -                                   - let's call the lifetime of this reference `'1`
   |                                                  |
   |                                                  let's call the lifetime of this reference `'2`
LL |         f
   |         ^ method was supposed to return data with lifetime `'2` but it is returning data with lifetime `'1`
   |
help: consider introducing a named lifetime parameter and update trait if needed
   |
LL |     async fn box_box_ref_AssocType<'a>(self: Box<Box<&<Struct as Trait>::AssocType>>, f: &'a u32) -> &'a u32 {
   |                                   ++++                                                    ++          ++

error: lifetime may not live long enough
  --> $DIR/ref-assoc-async.rs:39:9
   |
LL |     async fn box_pin_ref_AssocType(self: Box<Pin<&<Struct as Trait>::AssocType>>, f: &u32) -> &u32 {
   |                                                  -                                   - let's call the lifetime of this reference `'1`
   |                                                  |
   |                                                  let's call the lifetime of this reference `'2`
LL |         f
   |         ^ method was supposed to return data with lifetime `'2` but it is returning data with lifetime `'1`
   |
help: consider introducing a named lifetime parameter and update trait if needed
   |
LL |     async fn box_pin_ref_AssocType<'a>(self: Box<Pin<&<Struct as Trait>::AssocType>>, f: &'a u32) -> &'a u32 {
   |                                   ++++                                                    ++          ++

error: aborting due to 5 previous errors

