合辑《This Week in Rust》第 600 期
Rust 每周资讯和社区文章。
阅读:https://this-week-in-rust.org/blog/2025/05/21/this-week-in-rust-600/
合辑《The Embedded Rustacean Issue》第 46 期
嵌入式 Rust 的半月刊,聚集最新的文章、资讯、教程。
阅读:https://www.theembeddedrustacean.com/p/the-embedded-rustacean-issue-46
--
这个网站还自制书籍(不免费,但有样章和开源的代码示例)
《Simplified Embedded Rust: ESP Core Library Edition》
《Simplified Embedded Rust: ESP Standard Library Edition》
样章下载:https://www.theembeddedrustacean.com/c/downloads
目录:
- Introduction to Embedded Systems
- Microcontroller Concepts
- Embedded Rust & ESPs
- Programming Embedded Applications
- Programming GPIO
- Programming ADCs
- Programming Timers & Counters
- Programming PWM
- Programming Serial Communication
- Programming IoT & Network Services (仅 Standard Library Edition)
- The Embassy Framework(仅 Core Library Edition)
公告《GCC 编译器后端现在可以完全引导 Rust 编译器了》
它现在可以对 Rust 编译器进行完整的第 3 阶段引导!
这是将 Rust 引入更多平台的激动人心的一步。
虽然引导过程仅在 x86_64 Linux 上进行了测试,但我们计划在未来测试更多架构。这包括一些 Rust 目前根本不支持的架构!
不要误会我的意思 - 还有很多工作要做,cg_gcc 还没有完全准备好。测试、错误修复 - 甚至更多测试。尽管如此,未来是光明的,我们正在以极快的速度前进!
请密切关注带有详细 bug + 修复解释的东西。
仓库:https://github.com/rust-lang/rustc_codegen_gcc
Reddit:https://www.reddit.com/r/rust/comments/1ktph3c/media_the_gcc_compiler_backend_can_now_fully/
文章《Introducing Rust At Your Current Company》
作者:filtra
这篇文章探讨了如何在当前公司引入 Rust 语言。
调查发现,约一半的 Rust 开发者是在加入公司后才开始使用 Rust 的。
成功引入 Rust 的人大多是高级开发者(83.3%),但 Rust 的具体经验与推动能力关系不大。
公司接受 Rust 的原因包括领导层支持、技术优势(如内存安全和速度)以及内部概念验证的成功。
引入 Rust 的公司规模和行业分布广泛,但机器人、物联网和国防领域的企业更倾向于采用 Rust。
公司对 Rust 开放的迹象包括允许开发者选择语言、技术栈尚未确定、之前对 Rust 有兴趣或个人对工具和架构有决策权。
阅读:https://filtra.io/rust/career-help/how-to-get-a-rust-job-II
Reddit:https://www.reddit.com/r/rust/comments/1kt4uxc/how_to_get_a_rust_job_part_ii_introducing_rust_at/
文章《Async from scratch 3: Pinned against the wall》
作者:natkr
这篇文章是关于 Rust 异步编程的第三部分,主要探讨了“pinning”(固定)的概念。
文章首先介绍了 Rust 中的关联类型(associated types)和泛型的区别,并通过示例说明了关联类型在类型推导中的作用。
接着,文章通过一个“trick-or-treat”示例,展示了如何将异步函数转换为状态机和自定义的 Future
实现,并解释了在实现过程中遇到的生命周期问题。
为了解决这些问题,文章引入了 Pin
,这是一个用于限制对值的移动和部分修改的工具,从而允许安全地创建自引用结构。文章详细介绍了 Pin
的使用方法,包括如何安全地创建和操作 Pin
,以及如何通过 pin-project
宏简化投影操作。
最后,文章展示了如何使用 Pin
和 pin-project
来实现一个安全的 TrickOrTreat
异步状态机,并讨论了实现过程中的注意事项和潜在问题。
阅读:https://natkr.com/2025-05-22-async-from-scratch-3/
Reddit:https://www.reddit.com/r/rust/comments/1kthwfc/async_from_scratch_3_pinned_against_the_wall/
Capter - 跨平台的屏幕截图工具
Capter 是一个功能强大且易于使用的跨平台屏幕截图工具,支持多种操作系统,并提供便捷的安装方式。
它不仅具备基本的截图功能,还配备了丰富的标注工具,方便用户进行精确的屏幕捕捉和内容标注。
- 功能:支持全屏、窗口或自定义区域的截图,提供窗口选择辅助功能,内置强大的标注工具(如矩形、圆形、线条、箭头、自由手绘、高亮和文本),界面简洁友好,支持一键复制到剪贴板,便于快速分享。
- 安装方式:支持多种操作系统,包括 Windows(通过
winget
安装)、Arch Linux、Debian(从发布页面下载)、Mac OS(从发布页面下载)和 Rust 的 Cargo 包管理器。
仓库:https://github.com/decipher3114/Capter
Reddit:https://www.reddit.com/r/rust/comments/1kswjab/screenshot_and_annotation_tool_iced/
KelpsGet - 轻量级且多功能的下载器
KelpsGet 是一个用 Rust 编写的现代、轻量级且多功能的下载器,支持通过命令行界面(CLI)和图形用户界面(GUI)进行快速可靠的文件下载。
它支持 HTTP/HTTPS、FTP、SFTP 以及通过 Transmission 集成的 Torrent 下载(磁力链接)。
KelpsGet 提供实时速度和预计完成时间跟踪的进度条、自定义输出文件名、MIME 类型检测、跨平台支持(Linux、macOS、Windows)、静默模式、自动空间检查、自动重试、文件名验证、详细下载信息显示、高级下载模式(支持并行分块和断点续传)、代理支持、自动压缩和缓存以及速度限制和连接控制等功能。
仓库:https://github.com/davimf721/KelpsGet
Reddit:https://www.reddit.com/r/rust/comments/1kt69vh/after_5_months_of_development_i_finally_released/
Sguaba - 难以误用的 rigid body transforms 库
sguaba 是一个 Rust 编写的库,旨在为工程师提供难以误用的 rigid body transforms(空间数学)功能,帮助那些更关注其他事务而非线性代数的工程师。
它提供了 Coordinate
和 Vector
类型,用于表示坐标空间中的点和向量,这些类型基于 CoordinateSystem
泛型,以防止不同坐标系统之间的错误混用。通过 system!
宏,用户可以定义具有特定语义的额外坐标系统,如 NedLike
或 FrdLike
。
该库支持多种坐标系统,包括 WGS84(经纬度)、ECEF(地心地固坐标系)、NED(北、东、地)和 FRD(前、右、地)。它提供了从一个坐标系统转换到另一个坐标系统的数学构造,如刚体变换和旋转。此外,还提供了更易于理解的工程模块,包含如 Pose
和 Orientation
等类型。
sguaba 还提供了工程和数学两种 API 风格,以满足不同背景用户的需求。
仓库:https://github.com/helsing-ai/sguaba
Reddit:https://www.reddit.com/r/rust/comments/1ktfixl/sguaba_hardtomisuse_rigid_body_transforms_without/
Index-set - 支持原子操作的 bitset 库
index-set 是一个用 Rust 编写的位集(bitset)实现库,支持原子操作。
它旨在以极低的内存占用和极快的查找性能跟踪大量用户的在线/离线状态。该库具备以下特点:
- 重复使用从集合中移除的标识符。
- 提供原子和线程安全的操作。
- 插入、移除和查找操作均为 O(1) 时间复杂度。
- 每个标识符仅占用内存中的一个比特位,例如 1MB 内存可存储 8388608 个唯一标识符。
- 标识符唯一且尽可能小。
它提供了 AtomicBitSet
、BitSet
和 BitSetMut
等类型和 traits,方便用户在不同场景下使用。
仓库:https://github.com/nurmohammed840/index-set
Reddit:https://www.reddit.com/r/rust/comments/1ktrrtm/announcing_indexset_an_bitset_implementation_that/
--
From 日报小组 苦瓜小仔
社区学习交流平台订阅:
评论区
写评论👍