Crates / Compare / mio vs async-trait
Rust crates side by side · data Oct 24, 2026
mio vs async-trait
Short answerBy steady daily use, mio is bigger: 3,332,252 real downloads a day against 2,011,334 for async-trait (1.7x). 624 crates depend on mio and 26,080 on async-trait. mio last shipped 21 days ago, async-trait 3 months ago.
mio
EstablishedEstablished and steady.
624 crates depend on it; downloads don't spike on releases.
Lightweight non-blocking I/O.
async-trait
FoundationalFoundational and steady.
26,080 crates depend on it; downloads don't spike on releases.
Type erasure for async trait methods
mioasync-trait · 100% = that crate's normal quiet day, so a spike to 300% is triple its usual traffic
Every number, side by side
| Same window, same method | mio | async-trait |
|---|---|---|
| Real downloads a day | 3,332,252 | 2,011,334 |
| Crates that depend on it | 624 | 26,080 |
| Last release | 1.2.4, 21 days ago | 0.1.92, 3 months ago |
| Trend vs the field | -6% | -2% |
| Release-window share | 4.3% | 1.2% |
| Downloads in the window | 288,704,081 | 182,246,140 |
| All-time downloads | 1,170,982,578 | 751,077,628 |
| Versions published | 81 | 93 |
| License | MIT | MIT OR Apache-2.0 |
| MSRV | 1.71 | 1.71 |
| First published | Nov 11, 2014 | Jul 23, 2019 |
Which to pick
- Downloads tell you what is common, not what fits. Each crate's own description above says what it is for; when the jobs differ, pick by the job.
- When both fit, prefer the one more crates depend on (async-trait, 26,080 dependents): more eyes, more answered questions, and you may already have it in your tree.
- Check the release dates against your own pace: mio 21 days ago, async-trait 3 months ago.
Also in this space
Method
Real downloads = the median day with no release that day or the day before, from the crates.io API (Jul 27, 2026 to Oct 23, 2026). Raw crates.io counts include CI and bots and run high (why); the method is from our 90-day study.
Up next
Another comparison: Same method, same window. Foundational and steady vs widely used and steady.reqwest vs ureqRead it next →Also worth your time