humar:把 AI 翻译沉淀为可复习词库的 Rust CLI

日常写 UI 文案、需求说明、Issue 或技术文档时,真正麻烦的往往不是查到一个单词,而是确认一句话在当前场景里应该怎么说。例如“箭头方向需要切换”可能是图标方向要反转,也可能是展开和收起时箭头要随状态改变。直译不一定错,但很容易不自然。

humar 是一个用 Rust 写的命令行翻译记忆工具。它面向中英短语工作流:调用兼容 Responses API 的模型生成场景化翻译卡片,把成功结果保存到本地词库,之后可以检索、回看和复习,而不是每次都从零开始问模型。

2026-07-30 · 7 min · menzil

Rust 部分更新的三态语义:Option<Option<T>>、Serde 与 SeaORM

PATCH /users/{id} 这类部分更新接口里,一个字段通常不只有“有值”和“没值”两种状态。以 name 为例,客户端可能发送:

{}
{"name": null}
{"name": "Alice"}

它们的业务含义分别是:不修改 name、将 name 清空为数据库 NULL、将 name 更新为 Alice

问题的核心不是 Rust 有没有 nil,而是 API 输入确实有三种独立语义。把它们明确建模,才能避免把“字段没传”误当成“清空字段”。

2026-07-30 · 6 min · menzil

Rust derive_builder crate:用宏生成 Builder 模式

如果你在找 drive_builder,crates.io 上目前没有这个 Rust crate。更常见、也更符合这个名字含义的 crate 是 derive_builder:它通过 #[derive(Builder)] 为结构体自动生成 Builder 模式代码,减少大量重复 setter、默认值和校验逻辑。

2026-06-10 · 6 min · menzil

GNU Screen 使用指南

GNU Screen 是一个老牌终端复用器,作用和 tmux、zellij 类似:可以在一个终端里管理多个窗口,也可以让程序在后台继续运行。最常见的场景是 SSH 到服务器后启动一个长期任务,断开连接以后任务不受影响,之后再重新连回去查看状态。

Screen 没有 tmux 和 zellij 那么现代,但优点是很多服务器默认就装了,命令也很稳定。临时在服务器上跑脚本、编译项目、下载文件、看日志,用它非常方便。

2026-06-10 · 7 min · menzil

Zola 开发服务器如何用于端口转发

2026-06-10 · 3 min · menzil