本周 Rust 动态 533

147 阅读14分钟

本周 Rust 动态 533

2024-02-07

说明: 本周 Rust 动态 533 由 ChatGPT(gpt-4-1106-preview) 翻译。

你好,欢迎阅读本周的 This Week in Rust! Rust 是一种编程语言,旨在帮助每个人构建可靠且高效的软件。 这是其进展和社区情况的周度总结。 想要在这里提及你的内容吗?可以在 Twitter 上给我们标记 @ThisWeekInRust,或在 mastodon.social 上标记 @ThisWeekinRust,或者发送一个 pull request。 想要参与贡献吗?我们欢迎任何贡献

This Week in Rust 是在 GitHub 上公开开发的,归档可以在 this-week-in-rust.org 查看。 如果你发现本周的问题有任何错误,请提交 PR

Rust 社区更新

官方

基金会

项目/工具更新

观察/思考

Rust 演练

杂项

本周的 Crate

本周的 crate 是 embedded-cli-rs,这是一个便于在嵌入式设备上创建命令行界面(CLI)的库。

感谢 Sviatoslav Kokurin 自荐该库!

请提交你的建议和投票给下周的 crate

参与呼吁:项目和演讲者

CFP - 项目

一直想要为开源项目做贡献,但不知道从哪里开始? 我们每周都会从 Rust 社区中挑选一些任务供您选择并开始着手进行!

其中一些任务可能有导师可用,访问任务页面获取更多信息。

如果您是 Rust 项目拥有者,正在寻找贡献者,请在这里提交任务。

CFP - 演讲者

您是一位新手或有经验的演讲者,正在寻找一个地方分享一些酷东西吗?这一部分高亮显示了正在计划中的活动,并且正在接受提交,参加他们的活动作为演讲者。

  • RustNL 2024 投稿 截止 2024-02-19 | 荷兰, Delft | 活动日期:2024-05-07 至 2024-05-08
  • NDC Techtown 投稿截止 2024-04-14 | 挪威, Kongsberg | 活动日期:2024-09-09 至 2024-09-12

如果您是希望扩大活动影响范围的活动组织者,请通过 PR 至 TWiR 提交链接到提交网站。

Rust 项目更新

上周合并了309个拉取请求

即将举行的活动

2024年2月7日至2024年3月6日之间的Rusty 活动 🦀

虚拟

亚洲

欧洲

北美

大洋洲

如果你正在举办一个 Rust 活动,请将其添加到日历中以在这里提及。请记住添加活动的链接。 如果需要权限,请电邮Rust 社区团队

工作机会

请查看 r/rust 上的最新招聘贴

本周金句

我的观点是,如果不理解 Arc、Mutex、变量/引用的可变性,以及 async 和 await 语法最终是如何编译的,那么你就无法正确流畅地使用 Rust 的异步功能。Rust 强制你去理解事物为什么是这样,以及它们是怎样运作的。它只给你很少的抽象层,以便你去做那些自己完成可能会很乏味的事情。

我有机会参与了两个项目,这两个项目极大地迫使我去理解异步/等待(async/await)是如何工作的。第一个项目是将一个完全同步的库进行转换,这个库只需要一个同步 trait 来和外部服务通信。听起来一切都很好,对吧?但问题来了,当我们尝试将其移植到浏览器时。浏览器是单线程的,根本不能阻塞 JavaScript 运行时!对于 Rust 用户来说,它可能是最奇怪的环境。重写整个库根本不可能,因为它已经在其他平台上投入了生产。

我们做的是使用异步语法来重写网络部分,但我们使用了自己的生成器。思路很简单:当调用生成器时,生成器会产生一个 future,而产生的 future 可以被等待。但是!产生的 future 包含了一个指向生成器的 arc 指针。这意味着我们可以给生成器喂入我们正在等待的值,然后持有生成器引用的调用者可以将结果反馈给函数并恢复它。对于浏览器,我们使用原生浏览器 API 来派生网络通信;对于其他平台,我们就使用常规的阻塞网络调用。对于其他平台来说,外部接口保持不变。

诚实地说,我认为其他任何语言可能都无法做到这一点。或许 C 或 C++ 可以,但它们永远不会有相同的开发速度和开发者体验。

我相信人们已经提到过了,但是 Rust 当前的异步模型是最合理的选择。它确实给开发者带来了痛苦,但另一方面,并没有更好的异步模型适用于嵌入式或 WebAssembly。

来自 /u/Top_Outlandishness78 在 /r/rust

感谢 Brian Kung 的建议!

请提交你的金句并为下周投票!

《本周在 Rust》由以下人员编辑:nellshamrellllogiqcdmistmanericseppanenextrawurstandrewpollackU007Dkolharsamjoelmarceymariannegoldinbennyvasquez

电子邮件列表托管赞助由 The Rust Foundation 提供

在 r/rust 上讨论