See Explicit future construction, implicit await and Would implicit `await` really be a bad idea?. The decision the language team and the community agreed on is that while implicit await works well as a system, it doesn’t fit with Rust’s value of local semantic clarity. We want calling async fn -> T
and fn -> impl Future<T>
to do the same thing, and we want them to do the same thing in a sync and an async context.
An implicit await system doesn’t work for Rust because it breaks local semantic clarity of code: it makes the meaning different depending on context.