< 返回版块

Mike Tang 发表于 2026-05-05 09:07

Embassy - 新一代嵌入式应用开发框架

Embassy 是一个用于嵌入式应用的现代化框架,利用 Rust 编程语言及其异步功能来编写安全、正确且高能效的嵌入式代码。

核心特点

Rust + 异步 ❤️ 嵌入式

  • Rust 语言运行速度快、内存效率高,无需运行时、垃圾回收器或操作系统
  • 编译时内存和线程安全检查,强大的类型系统可在编译阶段捕获大量错误
  • 异步/等待(async/await)机制使嵌入式系统的多任务处理变得简单高效
  • 任务在编译时转换为状态机并协作运行,无需动态内存分配
  • 单栈运行,无需调整每个任务的栈大小
  • 取代传统 RTOS 内核上下文切换,性能更快、体积更小

主要功能

硬件抽象层(HAL)

  • 为多种硬件提供安全的 Rust API,无需直接操作寄存器
  • 支持 STM32、Nordic nRF 系列、树莓派 RP2040、ESP32 等芯片

时间管理

  • 全局可用的时间 API,无需手动配置硬件定时器
  • 提供不会溢出的 Instant、Duration 和 Timer 类型

原文链接:https://embassy.dev/

Aube - 新一代 Node.js 包管理器

Aube (发音 "ohb") 是一个快速的 Node.js 包管理器,可以无缝集成到现有的 JavaScript 和 TypeScript 项目中,无需迁移锁文件。

核心亮点

01 速度优势

  • 比 pnpm 快 4.6 倍
  • 比 bun 快 2.6 倍
  • 是目前最快的 Node.js 包管理器

02 锁文件兼容性

  • 支持读写现有的 yarn.lockpnpm-lock.yamlpackage-lock.json
  • 无需强制团队进行迁移
  • 直接在原有锁文件上工作

03 智能脚本运行

  • aubr test 命令会在依赖变更时自动安装
  • 重复运行时自动跳过安装步骤
  • 提供 aubx 用于一次性工具执行

04 磁盘空间节省

  • 比 npm 节省 90% 的磁盘空间

原文链接:https://aube.en.dev/

Rust 枚举转换实现的安全性问题

背景

一位开发者在编写国际象棋引擎时,希望实现枚举(enum)与数字之间的双向转换。虽然枚举转数字很简单(使用 as usize),但反向转换较为复杂。

当前实现方案

开发者使用了 unsafe 代码和 std::mem::transmute 来实现 usizePiece 枚举的转换:

  • 检查输入值是否 ≤ 5
  • 使用 transmuteu8 强制转换为 Piece 枚举
  • 超出范围则返回错误

核心问题

开发者询问这种实现方式是否可靠,会不会在后续开发中产生问题。

潜在风险

  • 使用 unsafe 代码需要格外小心
  • transmute 依赖于枚举的内存布局,可能因编译器优化而改变
  • 如果未来修改枚举定义(如调整顺序、添加字段),可能导致未定义行为

更安全的替代方案

社区通常建议使用 match 语句或第三方库(如 num_enumstrum)来实现此类转换,避免使用 unsafe 代码。

原文链接:https://www.reddit.com/r/rust/comments/1t372r1/is_this_a_bad_idea/

Black Sea - 终端多人航海游戏

Black Sea 是一款基于终端的多人航海游戏,游戏背景设定在斯德哥尔摩群岛。玩家可以通过真实的 GIS 海岸线数据驾驶船只,探索岛屿,并与其他玩家聊天。

安装方式

macOS 系统(通过 Homebrew):

直接下载二进制文件:

  • macOS(Apple Silicon):black-sea-client-macos-aarch64
  • macOS(Intel):black-sea-client-macos-x86_64
  • Linux:black-sea-client-linux
  • Windows:black-sea-client-windows.exe

游戏操作

按键 功能
方向键 驾驶船只
Enter 发送聊天消息
Esc 退出游戏

从源码构建

系统要求: Rust 1.85+

原文链接:https://github.com/dtennander/black-sea

评论区

写评论

还没有评论

1 共 0 条评论, 1 页