2 个版本
0.1.3 | 2023年2月18日 |
---|---|
0.1.2 | 2023年2月6日 |
291 in #assets
在 asset-derive 中使用
17KB
282 行
摘要
用于枚举的简单Rust资源加载派生宏,以及过程宏学习资源!
请随时提出任何建议或创建一个pull request。
这个库的原始意图是在编译时将资源加载到二进制文件中。最终还将支持运行时加载,但现在这将是未来的扩展。
待办事项
目前我为此项目扩展的想法列表。请使用
todo
标签为此列表添加一个新条目,创建一个issue。
- 文件名前缀
- 运行时加载
- 静态(初始化时一次)
- 动态(流式加载)
-
编译时加载
结构
由于 asset-derive
旨在成为一个过程宏crate,同时还包括一个特性实现(要派生的),因此项目结构相对复杂。这是因为目前过程宏crate需要与普通crate完全分开定义。
幸运的是,外部API保持不变,asset-derive
现在将作为特性实现crate,它依赖于 asset-derive-macro
,后者包含实际的宏实现。目前这是不可避免的,但我尽力保持外部API不变,并使其尽可能简单。
代码树
asset-derive/ <-- Crate to use (trait implementation)
src/
examples/ <-- Houses examples using the trait and macro itself.
asset-derive/ <-- Actual internal derive macro crate. Will be pulled in by main crate.
src/
示例
use asset_derive::Asset;
#[derive(Asset)]
#[asset(basepath = "./icons/", ext = "svg")]
enum Icon {
#[asset(ext = "png")]
Select,
Folder,
#[asset(filename = "folder-dim")]
FolderDim,
}
依赖项
~1.5MB
~35K SLoC