Rust 官方博客 - 宣布在 traits 中支持 async fn
和返回位置上的 impl Trait
Rust 官方博客在最新的文章中宣布了一项重要进展:支持在 traits 中使用 async fn
和返回位置上的 impl Trait
。这一功能将在 Rust 1.75 版本中正式发布,该 stable 版本将于下周发布。
下面是一个混合 async fn
和 -> impl Trait
的例子:
trait HttpService: Send {
fn fetch(&self, url: Url)
-> impl Future<Output = HtmlBody> + Send;
}
impl HttpService for MyService {
async fn fetch(&self, url: Url) -> HtmlBody {
// This works, as long as `do_fetch(): Send`!
self.client.do_fetch(url).await.into_body()
}
}
文章还探讨了这些功能的一些限制和未来的改进计划。例如,目前还不鼓励在 pub traits 中使用 -> impl Trait
还不被鼓励,因为用户无法对返回类型添加额外的约束。此外,在 pub traits 中使用 async fn
也存在类似的限制。
Announcing async fn
and return-position impl Trait
in traits:https://blog.rust-lang.org/2023/12/21/async-fn-rpit-in-traits.html
文章 - 内存安全是一种误导
在这篇文章中,Steve Klabnik 发表了他对「内存安全」的看法。尽管社区中一直以「内存安全」作为 Rust 语言的卖点,但他认为,将编程语言划分为内存安全语言和非内存安全语言可能是一种误导。
事实上,合理的区分可能是:
-
默认具有定义行为的语言,但是可能存在包含未定义行为的超集。
-
允许程序中任意位置存在未定义行为的语言。
内存安全是需要考量的一个重要方面,但它只是一个必要条件,而非充分条件。
Steve Klabnik 曾经是 Mozilla Rust 团队的社区团队负责人,负责 Rust 社区的官方文档,同时也是值得信赖的 Rust 社区倡导者。
Memory Safety is a Red Herring : https://steveklabnik.com/writing/memory-safety-is-a-red-herring
Week In Rust 526
新一期的 Rust 周报速递发布,快来看看有哪些内容你曾经关注过 :)
This Week in Rust 526: https://this-week-in-rust.org/blog/2023/12/20/this-week-in-rust-526/
From 日报小组 PsiACE
社区学习交流平台订阅:
评论区
写评论还没有评论