@kb10uy それ参照じゃなくて borrow 可能という条件付きの本体を渡してるじゃん
何でもいいから str へ変換可能な何かが欲しい、なら AsRef<str> で受け取ればいい。ただし async fn f<'a>(x: impl AsRef<str> + 'a) のとき、戻り値の Future の寿命が 'a となるので、多くの場合ランタイムは 'static を要求するから、必然的に参照を渡してもうまく行かない結果になると思う。何も試してないから知らんけど
そもそも 'a をとっても 'static を要求されることが分かった https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=edfa08cd2214ce0eb1c1e62078d31d5e
そしたら async fn を使うのやめて、明示的に -> impl Future + 'static にすればいいんでね?
fn f<'a>(x: &'a str) -> impl Future + Send + Sync + 'static ならなにも困らないっしょ
> error[E0706]: functions in traits cannot be declared `async`
ほーん