Skip to main content

juncture_derive/
lib.rs

1use proc_macro::TokenStream;
2use syn::{DeriveInput, parse_macro_input};
3
4mod state_derive;
5
6/// Derive macro for State trait
7///
8/// Generates:
9/// - Update struct (each field becomes Option<T>)
10/// - Field index constants
11/// - State trait implementation
12#[proc_macro_derive(State, attributes(reducer, state_version, migrate_from, subset_of))]
13pub fn derive_state(input: TokenStream) -> TokenStream {
14    let input = parse_macro_input!(input as DeriveInput);
15    state_derive::derive_state_impl(input)
16}
17
18// Rust guideline compliant 2026-05-21