【Rust日报】2023-12-21 宣布在 traits 中支持 async fn 和返回位置上的 impl Trait

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 + 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

社区学习交流平台订阅:

  • Rust.cc 论坛:支持 rss

  • 微信公众号:Rust 语言中文社区

你可能感兴趣的:(rust,开发语言,后端)