The async working group is excited to announce that async fn can now be used in traits in the nightly compiler. You can now write code like this: #![feature(async_fn_in_trait)] trait Database { async fn fetch_data(&self) -> String; } impl Database for MyDb { async fn fetch_data(&self) -> String { ... } } A full working example is available in the playground. There are some limitations we'll cover,
![Async fn in trait MVP comes to nightly | Inside Rust Blog](https://cdn-ak-scissors.b.st-hatena.com/image/square/cc73843c221f67fc442877f4f77a487e6f19c548/height=288;version=1;width=512/https%3A%2F%2Fwww.rust-lang.org%2Fstatic%2Fimages%2Frust-social-wide.jpg)