#macro-derive #assets #derive #proc-macro #enums #resources #learning

asset-derive

简单的枚举资产处理衍生宏,以及进程宏学习资源!

5个版本

0.1.4 2023年2月18日
0.1.3 2023年2月6日
0.1.2 2023年2月3日
0.1.1 2023年1月30日
0.1.0 2023年1月30日

#1161Rust模式

29 每月下载次数

MIT/Apache

16KB

asset-derive

Docs Crate License TODOs

摘要待办事项文档


摘要

简单的Rust枚举资产加载衍生宏,以及进程宏学习资源!

请随时提出建议或创建拉取请求。

这个库最初的目的是在编译时将资产加载到二进制文件中。这最终也允许运行时加载,但现在这将是一个未来的扩展。

待办事项

目前我为此项目扩展的想法列表。请使用 todo 标签为此列表创建一个问题。

  • 文件名前缀
  • 运行时加载
    • 静态(初始化时一次)
    • 动态(流动加载)
  • 编译时加载

结构

由于 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,
}

Icon::Select.fetch()
Icon::FolderDim.fetch_static()

依赖项

~1.5MB
~35K SLoC