resgen
一个用于 Rust GUI 应用的资源生成器,支持 Android 风格的资源管理。
功能特性
- 字符串资源: 多语言支持,支持
%s占位符转换为{} - 颜色资源: 浅色/深色主题支持,支持十六进制颜色解析
- 尺寸资源: 数值类型尺寸资源
- 可绘制资源: 图片和 SVG 资源,使用
OnceLock缓存 - Android 风格的目录结构: 如
res/values/,res/values-night/等
生成的文件
构建后,resgen 会在 OUT_DIR(由 Cargo 自动设置)中生成以下文件:
| 文件名 | 说明 |
|---|---|
strings_generated.rs |
字符串资源代码(StringId 枚举、get_raw_string 函数等) |
colors_generated.rs |
颜色资源代码(raw 模块、主题感知的颜色函数) |
dimens_generated.rs |
尺寸资源代码(常量定义) |
drawable_generated.rs |
可绘制资源代码(带 OnceLock 缓存的图片/ SVG 加载函数) |
r_generated.rs |
总入口文件(整合了所有资源,提供 R 模块) |
使用方法
1. 添加依赖
将 resgen 添加到你的 Cargo.toml:
[]
= "0.1"
2. 配置 build.rs
在项目根目录下创建一个 build.rs 文件:
3. 在代码中包含资源
在你的主要代码(通常是 src/main.rs 或 src/lib.rs)中包含生成的资源文件:
// 包含总入口文件
include!;
// 引入 R 模块以便于使用
use *;
目录结构
按照 Android 风格组织你的资源:
your_project/
├── Cargo.toml
├── build.rs
├── src/
│ └── main.rs
└── res/
├── values/
│ ├── strings.xml # 默认语言的字符串资源
│ ├── colors.xml # 浅色主题的颜色资源
│ └── dimens.xml # 尺寸资源
├── values-night/
│ └── colors.xml # 深色主题的颜色资源
├── values-zh-rCN/
│ └── strings.xml # 简体中文语言的字符串资源
└── drawable/
├── logo.png # 图片资源
└── icon.svg # SVG 资源
资源文件格式
strings.xml
我的应用
你好,%s!
这是一个测试应用。
colors.xml
#3498db
#2ecc71
#ffffff
#333333
dimens.xml
16.0
8.0
14.0
示例
查看 examples 目录获取完整的工作示例。
许可证
MIT