< 返回版块

Mike Tang 发表于 2026-02-08 10:00

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 页