error[E0308]: mismatched types
  --> $DIR/issue-107860.rs:3:36
   |
LL | async fn str<T>(T: &str) -> &str { &str }
   |                                    ^^^^ expected `&str`, found `&fn(&str) -> ... {str::<...>}`
   |
   = note: expected reference `&str`
              found reference `&for<'a> fn(&'a str) -> impl Future<Output = &'a str> {str::<_>}`

error: aborting due to previous error

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