Rust is exploring ideas that allow it to generalise over effects, so you don't need foo and foo_async.
It's an unusual name, and potentially complicates error messages, but it's good problem to examine.
https://blog.rust-lang.org/inside-rust/2022/07/27/keyword-generics.html