Crates.io | asset-derive-macro |
lib.rs | asset-derive-macro |
version | 0.1.3 |
source | src |
created_at | 2023-02-06 01:44:35.370461 |
updated_at | 2023-02-18 21:06:57.038186 |
description | Simple asset handling derive macro for enums, and a proc-macro learning resource! |
homepage | |
repository | https://github.com/Shadorain/asset-derive |
max_upload_size | |
id | 777566 |
size | 27,597 |
Simple Rust asset loading derive macro for Enums, and a resource for learning proc-macros!
Please feel free to offer any advice or create a pull request.
The original intent of this library was for compile time loading assets into a binary. This will eventually allow for run-time loading as well, but as for now that will be a future expansion.
List of ideas I have at the moment for this project's expansion. Please create an issue for a new item to add to this list, using
todo
label.
Since asset-derive
is meant to be a procedural macro crate, while also housing
a trait implementation as well (to be derived), there is a somewhat complex
project structue. This is because of the current annoyance of proc-macro crates
having to be defined completely separate to normal crates.
The external API shall stay the same fortunately, asset-derive
will now be stuck
as the trait implementation crate which depends on asset-derive-macro
which
houses the actual macro implementation. This is unavoidable for the time being, but
I did the best I could to not have the external API change and make it as simple as
can be.
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,
}