#helper #nested #complex #structures #generate #macro #yuuka

macro yuuka-macros

A helper library to generate complex and nested structures by a simple macro

14 unstable releases (3 breaking)

new 0.4.0 Nov 5, 2024
0.3.7 Nov 1, 2024
0.3.6 Oct 31, 2024
0.2.2 Oct 5, 2024
0.1.1 Oct 2, 2024

#2092 in Procedural macros

Download history 171/week @ 2024-09-26 413/week @ 2024-10-03 554/week @ 2024-10-10 16/week @ 2024-10-17 130/week @ 2024-10-24 404/week @ 2024-10-31

1,265 downloads per month
Used in yuuka

Apache-2.0

76KB
1.5K SLoC

yuuka

Crates.io License Crates.io Version GitHub Actions Workflow Status

Introduction

This is a helper library to generate complex and nested structures by a simple macro. It is based on the serde library that is used to serialize and deserialize data in Rust.

The name yuuka comes from the character Yuuka in the game Blue Archive.

Quick Start

use serde::{Serialize, Deserialize};
use yuuka::derive_struct;

derive_struct!(
    #[derive(Serialize, Deserialize)]
    GameDevelopment {
        description: String,
        members: Members {
            script_writer: String,
            illustrator: String,
            programmer: String,
            tester: Vec<String>,
        },
        projects: [Project {
            project_name: String,
            engine: String,
        }],
    }
);

let config = GameDevelopment {
    description: "A game development team".to_string(),
    members: Members {
        script_writer: "Momoi".to_string(),
        illustrator: "Midori".to_string(),
        programmer: "Yuzu".to_string(),
        tester: vec!["Arisu".to_string(), "Key".to_string()],
    },
    projects: vec![
        Project {
            project_name: "777 Game Launcher".to_string(),
            engine: "Tauri".to_string(),
        },
        Project {
            project_name: "Blue Archive".to_string(),
            engine: "Unity".to_string(),
        },
    ]
};

TODO

  • Array type support
  • Enum type support
  • Anonymous struct support that can use auto! macro to confirm the auto-generated field name
  • Default value support that can use = to assign the default value
  • pub and pub(crate) identifier support
  • Support custom derive macro.
  • Write a homepage for this library
  • Upload to crates.io

Dependencies

~0.5–1.2MB
~26K SLoC