dtolnay/async-trait — explained in plain English
Analysis updated 2026-07-17 · repo last pushed 2026-03-24
Add async methods to a Rust trait by marking it with #[async_trait], without hand-writing future plumbing.
Build a plugin-style system where different types implement a shared trait with an async run() method.
Use dynamic dispatch with async trait methods, like storing different ad types or handlers behind one interface.
Opt out of Send bounds with #[async_trait(?Send)] when your async trait methods don't need to cross threads.
| dtolnay/async-trait | b-nnett/goose | orhun/ratty | |
|---|---|---|---|
| Stars | 2,157 | 2,176 | 2,082 |
| Language | Rust | Rust | Rust |
| Last pushed | 2026-03-24 | — | — |
| Maintenance | Maintained | — | — |
| Setup difficulty | easy | hard | moderate |
| Complexity | 2/5 | 4/5 | 3/5 |
| Audience | developer | developer | developer |
Figures from each repo's GitHub metadata at analysis time.
async-trait is a Rust macro that lets you write async methods inside traits, something Rust doesn't support natively, so trait objects can hold different types that each run async code.
Mainly Rust. The stack also includes Rust.
Maintained — commit in last 6 months (last push 2026-03-24).
Setup difficulty is rated easy, with roughly 5min to a first successful run.
Mainly developer.
This repo across BitVibe Labs
double-check against the repo, no cap.