ruwebframe
介绍
ruwebframe 是 akunlong 推出的基于 rust 的代码开发平台
该平台基于 ruwebframe 框架,提供了基于 Rust 的 Web 应用开发能力
该平台提供了基于 Rust 的 Web 应用开发能力,包括了基于 Rust 的 Web 应用开发能力
工业级世匠、开发者神器
软件架构
软件架构说明 ##开发工具: RustOver
参考 https://gitee.com/leijmdas/goweb3.git
工程:https://gitee.com/leijmdas/ruwebframe.git
安装教程
已经发布至rust仓库
- View v0.1.3 https://crates.io/crates/ruwebframe/0.1.2
ruwebframe has 4 core modules:
- rucmd - 命令行工具模块,提供命令行接口,支持 enc/dec(加密/解密)、cfg(配置查看)、rudi(依赖注入代码生成)等子命令
- rulog - 日志模块,基于 flexi_logger 实现,支持日志分级(info/error/debug)、文件轮转、控制台输出
- rudi - 依赖注入(DI)模块,类似 Java Spring IoC 容器,支持单例/多例注册、全局 Bean 获取、自动代码生成
- rucfg - 配置管理模块,基于 YAML 配置文件,支持多环境切换(dev/test/prod),使用 spicex 解析环境变量
根据对代码库的深入分析,以下是
ruwebframe四大核心模块的功能清单:
ruwebframe 功能清单
ruwebframe 是一个基于 Rust(actix-web)的 Web 应用开发框架,定位为"工业级世匠、开发者神器",对标 Go 的 goweb3 框架。
1. rucmd — 命令行工具模块
提供统一的命令行入口,支持以下子命令:
| 子命令 | 功能 | 说明 |
|---|---|---|
enc |
加密 | 调用 ruenc 模块对字符串进行加密 |
dec |
解密 | 调用 ruenc 模块对字符串进行解密 |
cfg |
查看配置 | 读取并打印当前 YAML 配置的 JSON 格式 |
rudi list |
列出结构体 | 扫描 ./src 下所有 Rust 结构体 |
rudi all |
批量生成 DI | 为所有结构体自动生成 _init.rs 依赖注入代码 |
rudi <name> |
单个生成 DI | 为指定名称的结构体生成 _init.rs |
help |
帮助 | 打印帮助信息 |
version |
版本 | 打印版本信息 |
核心设计:通过 ctor 机制在程序启动时自动注册为单例 Bean,存入全局 DI 容器。
2. rulog — 日志模块
基于 flexi_logger 实现的企业级日志系统:
| 功能 | 说明 |
|---|---|
| 日志分级 | 支持 info、error、debug 三个级别 |
| 双输出 | 同时输出到控制台(println!)和日志文件 |
| 文件轮转 | 单文件超过 50MB 自动轮转,保留最近 5 个归档 |
| 自定义格式 | [2026-08-01 14:30:25.123] [INFO] module:line - message |
| 日志路径 | 统一输出到 ./logs/app.log |
| 便捷函数 | info()、error()、debug()、info2()、error2()、debug2() |
| LogInfo 辅助 | 支持链式拼接日志信息,通过 LogInfo 结构体合并多个日志段 |
通过 OnceLock 实现日志配置的全局懒加载,确保整个应用生命周期内只初始化一次。
3. rudi — 依赖注入(DI)模块
对标 Java Spring IoC 容器的 Rust 实现,是整个框架的核心基础设施:
| 子模块 | 功能 | 说明 |
|---|---|---|
| dicontainer | IoC 容器核心 | Container 结构体,支持 Factory(多例)和 Singleton(单例)两种模式 |
| direg | 全局静态门面 | 基于 OnceLock<RwLock<Container>> 提供全局唯一容器,任意位置可通过 get_bean::<T>(key) 获取 Bean |
| difactroy | DI 代码工厂 | 自动扫描 ./src 下所有 .rs 文件中的结构体,通过 AST 解析后自动生成 _init.rs 依赖注入代码 |
| ditemplate | 模板引擎 | 将 struct_init.template 模板文件与结构体信息结合,渲染生成初始化代码 |
| ditrait | 容器抽象层 | BeanRegistry trait 定义容器行为规范,便于扩展和 mock |
| ruast | AST 解析 | 基于 syn crate 解析 Rust 源码,提取结构体和 trait 信息 |
| didto | 数据传输对象 | StructInfo 等 DTO,承载结构体元信息用于代码生成 |
设计亮点:
- 线程安全:
Arc + Mutex + RwLock + OnceLock - 编译期自动注册:
ctor+inventory机制 - 零配置启动:一行
#[ctor(unsafe)]即可自动注册 Bean
4. rucfg — 配置管理模块
基于 YAML 的多环境配置管理系统:
| 功能 | 说明 |
|---|---|
| 多环境切换 | 通过 env.yml 中的 Env 字段,自动加载 ichub-{env}.yml(如 ichub-dev.yml、ichub-postgres.yml) |
| 环境变量解析 | 支持 ${VAR_NAME} 语法,运行时替换环境变量 |
| YAML → JSON | 提供 read2json() 方法将配置转为 JSON 字符串 |
| 环境判断 | ifDev()、ifTest()、ifMaster() 等便捷函数 |
| 配置结构 | 包含 software(软件信息)、database(数据库)、redis、web(服务器配置)等完整 DTO |
| 线程安全 | 使用 Arc<Mutex<CfgDto>> 保证并发读取安全 |
| 懒加载 | 首次访问时解析配置文件,之后直接返回缓存 |
配置解析链:env.yml → Env 字段 → 拼接文件名 → 解析 YAML → 替换环境变量 → CfgDto
模块依赖关系
rucmd ──→ rucfg (读配置)
──→ rulog (打日志)
──→ rudi (代码生成)
──→ ruenc (加解密)
rudi ──→ rulog (打日志)
──→ rucfg (读配置模板)
所有模块 ──→ rudi/direg (全局 DI 容器,统一管理 Bean)
四个模块协同工作,共同构成了 ruwebframe 的核心基础设施层。
使用说明
- xxxx
- xxxx
- xxxx
参与贡献
- Fork 本仓库
- 新建 Feat_xxx 分支
- 提交代码
- 新建 Pull Request