Rust 中的热重载?Subsecond 和 Dioxus 来救场!
背景
作者在开发 Rust GraphQL API 时,对传统的 cargo watch 流程感到不满,因为它会在代码更改和重建完成之间杀死服务器。之前尝试过 Dioxus 的 subsecond 工具但未成功,直到 2025 年 8 月的改进版本(PR #4588)添加了异步函数热重载的便捷功能。
实现步骤
1. 添加依赖
cargo add dioxus_devtools --features serve
需要启用 serve 特性来使用 serve_subsecond_with_args 功能
2. 重构应用入口点
分三步进行:
- 将环境、数据库、日志等设置代码分离出来
- 将主异步服务器函数独立出来
- 将设置和服务器函数传递给
dioxus_devtools::serve_subsecond_with_args
3. 安装 Dioxus CLI
curl -sSL https://dioxus.dev/install.sh | bash
4. 运行热重载服务器
dx serve --hot-patch
代码示例
- 主入口函数:使用
serve_subsecond_with_args包装应用环境和服务器函数 - 环境设置:创建包含端口、数据库等配置的结构体
- 服务器函数:实际的 HTTP 服务器逻辑(如 Axum 路由)
建议
作者推荐将热重载功能放在 feature flag(如 local)后面,方便在不同环境中切换。
效果
作者已在 Yaay 后端的主 GraphQL API 中使用该方案数日,体验良好,显著提升了全栈开发速度。
https://codethoughts.io/posts/2026-02-07-rust-hot-reloading/
LiteBox - 微软安全沙箱库操作系统
项目概述
LiteBox 是一个专注于安全的库操作系统(Library OS),通过大幅减少与主机系统的接口来降低攻击面。该项目目前处于活跃开发阶段,API 和接口可能会发生变化。
核心特性
- 灵活的互操作性:支持各种"北向"(North)shims 和"南向"(South)平台之间的轻松互操作
- 广泛适用性:设计用于内核和非内核场景
- Rust 友好接口:提供类似 nix/rustix 风格的 Rust 接口
主要应用场景
- 在 Windows 上运行未修改的 Linux 程序
- 在 Linux 上沙箱化 Linux 应用程序
- 在 SEV SNP 之上运行程序
- 在 Linux 上运行 OP-TEE 程序
- 在 LVBS 上运行
项目信息
- 许可证:MIT 许可证
- 开发状态:积极开发中,等待稳定版本发布
- 贡献指南:提供了贡献指南、行为准则、安全政策等文档
- 商标声明:包含微软及第三方商标使用规范
https://github.com/microsoft/litebox
--
From 日报小组 Mike
社区学习交流平台订阅:
1
共 0 条评论, 1 页
评论区
写评论还没有评论