< 返回版块

Mike Tang 发表于 2026-08-25 07:25

从 Rust 转向 Zig:IDE、项目结构和内存管理的差异

《What Zig felt like, coming from Rust》是一篇 Rust 作者重写 JSONPath 项目后的对比记录,作者把已有的 jsonpath-rust 改写成 Zig 版本 zig-jsonpath,并从 IDE、目录结构、测试、函数式编程和内存管理等方面记录差异。

作者提到,Zig 当前的 IDE 支持明显少于 Rust,实际开发主要依赖命令行工具;build.zig 可以统一执行测试、筛选测试和合规性检查。Zig 更倾向于扁平的源文件结构,作者在这次项目中没有像 Rust 项目那样提前拆分多层目录。测试体验方面,Zig 需要显式配置测试入口,手动内存管理也增加了测试和维护成本;作者在改写过程中遇到过 Rust 所依赖的所有权和 Drop 规则可以在编译期避免的内存泄漏与 double-free 问题。

原文链接:https://besok.github.io/posts/what-zig-felt-like-coming-from-rust/

Bluekey:用 Rust 把电脑变成可连接多台设备的蓝牙键鼠

Bluekey 是一个使用 Rust 编写的命令行工具,可以让电脑通过蓝牙模拟键盘和鼠标,并把本机输入转发到多个蓝牙设备。

项目以系统 daemon 运行,通过 D-Bus 和 CLI 管理多个键盘、鼠标到多个客户端的桥接;bluekey bridge 可按输入设备路径和目标设备 MAC 地址或别名建立连接,bluekey list 用于查看支持键鼠输入的设备。Bluekey 使用 Bluetooth HID over GATT 服务,当前支持 Linux,需要访问 /dev/input 设备,但不要求 root 权限,加入 input 用户组即可。项目面向 iPad、游戏主机和其他支持蓝牙键鼠的设备,减少多套输入设备、反复配对或 USB 插拔的需要。

原文链接:https://github.com/olbyolby/bluekey

strum:为 Rust 枚举补充遍历、显示和字符串解析

strum 是一组用于 Rust 枚举的过程宏,提供枚举变体遍历、字符串转换和解析等能力,近期 r/rust 社区的一篇文章以 Espressif 的 esp-generate 为例介绍了它的使用方式。

EnumIterIntoEnumIterator 为枚举提供 .iter(),避免手动维护所有变体的数组;Display 可按 kebab-case 等规则生成字符串,EnumString 则实现从字符串解析枚举。项目还提供 EnumCountVariantNamesEnumPropertyEnumMessage 等宏,适合 CLI 参数、配置文件和交互式选项等需要列出有限状态集合的场景。

原文链接:https://eagle2000.space/en/rust/crate-of-the-day-strum/

tokio_with_wasm:让同一套异步 Rust 代码运行在原生环境和浏览器

tokio_with_wasm 是一个面向 wasm32-unknown-unknown 的异步 Rust 兼容层,目标是让原本使用 Tokio 的代码在原生目标和浏览器中保持相同的调用方式。

项目通过 use tokio_with_wasm::alias as tokio; 切换实现:原生目标解析为真正的 Tokio,浏览器端则使用 JavaScript Web API 提供相同的任务、计时器和集合接口。spawn_blocking 在浏览器中通过 Web Worker 池执行计算任务,任务池会根据并行任务数量自动扩展;项目还覆盖 spawnyield_nowsleepintervalJoinSet 等常用接口。浏览器端的 spawn_blocking 需要 nightly、atomics 目标特性以及 COOP/COEP 响应头,项目定位是 wasm32-wasi 与 wasi-threads 成熟前的过渡方案。

原文链接:https://github.com/cunarist/tokio-with-wasm

评论区

写评论

还没有评论

1 共 0 条评论, 1 页