你是否厌倦了在 Rust 后端开发中,每次修改代码都要等待 cargo watch 杀死服务器并完成漫长的重建?想要获得像前端开发一样流畅的热重载体验吗?一位开发者在构建 Rust GraphQL API 时就遇到了这个痛点。他之前尝试过 Dioxus 生态下的 subsecond 工具但未成功,直到 2025 年 8 月的改进版本才带来了转机。新版本通过 PR #4588 添加了对异步函数热重载的便捷支持,让这一切成为可能。
下面,我们来一步步看看如何将这套方案整合进你的 Rust Web 项目。
实现步骤
1. 添加依赖
首先,将 dioxus_devtools 添加到你的项目依赖中,并启用 serve 特性:
cargo add dioxus_devtools --features serve
启用 serve 特性是为了使用关键的 serve_subsecond_with_args 功能。
2. 重构应用入口点
为了让热重载生效,需要对你的应用入口点进行一些重构,主要分为三步:
- 将环境初始化、数据库连接、日志配置等设置代码分离出来。
- 将主要的异步服务器函数独立出来。
- 将上述的设置函数和服务器函数作为参数,传递给
dioxus_devtools::serve_subsecond_with_args。
3. 安装 Dioxus CLI
你需要安装 Dioxus 的命令行工具来启动热重载服务器:
curl -sSL https://dioxus.dev/install.sh | bash
4. 运行热重载服务器
一切就绪后,使用 Dioxus CLI 启动开发服务器:
dx serve --hot-patch
代码结构示例
- 主入口函数:使用
serve_subsecond_with_args 包装你的应用环境设置和服务器函数。
- 环境设置:通常是一个返回包含端口、数据库配置等参数的结构体或状态的函数。
- 服务器函数:这里是你的实际 HTTP 服务器逻辑,例如使用 Axum、Actix-web 等框架定义路由和处理程序。
实用建议
原作者建议将热重载功能放在一个特性标志(例如 local)后面。这样,你可以轻松地在本地开发环境和生产环境之间切换,避免将开发工具打包进最终产物。
效果如何?
据开发者反馈,他已将此方案用于 Yaay 后端的 GraphQL API 数日,体验非常顺畅。代码保存后几乎能立即生效,无需中断服务,显著提升了全栈开发的迭代速度。
原文链接:https://codethoughts.io/posts/2026-02-07-rust-hot-reloading/
LiteBox:微软开源的安全沙箱库操作系统
在追求极致安全的道路上,微软近期开源了一个值得关注的新项目 —— LiteBox。它是一个专注于安全的库操作系统(Library OS),其核心设计哲学是通过大幅减少与底层主机系统的交互接口,来从根本上降低潜在的攻击面。目前,该项目正处于积极开发阶段,API 和接口可能还会发生变化。
核心特性
- 灵活的互操作性:支持在各种“北向”(North)shims(适配层)和“南向”(South)平台之间轻松互操作。
- 广泛适用性:其设计不仅限于内核场景,也适用于非内核环境。
- Rust 友好接口:为 Rust 开发者提供了类似 nix/rustix 风格的友好接口。
主要应用场景
LiteBox 的设计使其能在多种安全敏感的场景下发挥作用,例如:
- 在 Windows 系统上直接运行未经修改的 Linux 程序。
- 在 Linux 系统上对 Linux 应用程序进行沙箱化隔离。
- 在 AMD SEV SNP(安全加密虚拟化)等硬件安全环境中运行程序。
- 在 Linux 上运行基于 OP-TEE(可信执行环境)的程序。
- 在 LVBS(轻量级虚拟化引导服务)之上运行。
项目现状与信息
对于有兴趣关注或参与这个 开源实战 项目的开发者,以下是一些关键信息:
- 许可证:采用宽松的 MIT 许可证。
- 开发状态:项目正在活跃开发中,尚未发布稳定版本,意味着早期采用者需要留意可能的变更。
- 贡献指南:项目仓库提供了完善的贡献指南、行为准则和安全政策文档。
- 商标声明:包含了微软及相关第三方的商标使用规范。
项目地址:https://github.com/microsoft/litebox
这两个来自 Rust 生态和系统安全领域的新动态,是否给你带来了新的开发灵感或解决方案呢?欢迎在技术社区交流你的想法。
|