💡
原文英文,约1800词,阅读约需7分钟。
📝
内容提要
Rust Async Working Group宣布了实现在traits中使用async fn的重要进展。Rust 1.75将支持-> impl Trait标记和traits中的async fn。然而,仍然缺少一些重要功能。建议在何时以及如何使用这些稳定功能。
🎯
关键要点
- Rust Async Working Group宣布在traits中使用async fn的重要进展。
- Rust 1.75将支持-> impl Trait标记和traits中的async fn。
- -> impl Trait允许函数返回实现Trait的某种类型,常用于返回闭包和迭代器。
- Rust 1.75开始支持在trait定义和trait实现中使用return-position impl Trait。
- async fn在traits中被允许,但仍然存在一些限制。
- 在公共traits中使用-> impl Trait不被推荐,因为无法对返回类型添加额外的约束。
- async fn在公共traits中也存在类似的限制,使用时会收到警告。
- 建议使用trait_variant::make宏来支持多线程执行器。
- 使用-> impl Trait和async fn的traits不支持动态调度。
- 未来希望允许用户为impl Trait返回类型添加自定义约束。
- 对于私有traits,可以自由使用-> impl Trait,但公共traits最好避免。
- 可以在traits和impl中自由切换async fn和-> impl Future的写法。
- 在实现trait时,如果实现签名包含比trait本身更详细的信息,会收到警告。
- Async Working Group期待在未来继续改进async Rust的功能。
➡️