< 返回版块

苦瓜小仔 发表于 2025-05-24 23:03

Tags:日报

合辑《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 宏简化投影操作。

最后,文章展示了如何使用 Pinpin-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(空间数学)功能,帮助那些更关注其他事务而非线性代数的工程师。

它提供了 CoordinateVector 类型,用于表示坐标空间中的点和向量,这些类型基于 CoordinateSystem 泛型,以防止不同坐标系统之间的错误混用。通过 system! 宏,用户可以定义具有特定语义的额外坐标系统,如 NedLikeFrdLike

该库支持多种坐标系统,包括 WGS84(经纬度)、ECEF(地心地固坐标系)、NED(北、东、地)和 FRD(前、右、地)。它提供了从一个坐标系统转换到另一个坐标系统的数学构造,如刚体变换和旋转。此外,还提供了更易于理解的工程模块,包含如 PoseOrientation 等类型。

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 个唯一标识符。
  • 标识符唯一且尽可能小。

它提供了 AtomicBitSetBitSetBitSetMut 等类型和 traits,方便用户在不同场景下使用。

仓库:https://github.com/nurmohammed840/index-set

Reddit:https://www.reddit.com/r/rust/comments/1ktrrtm/announcing_indexset_an_bitset_implementation_that/

--

From 日报小组 苦瓜小仔

社区学习交流平台订阅:

评论区

写评论
hohowt 2025-05-26 14:41

👍

1 共 1 条评论, 1 页