holder 0.14.0

getter setter auto gen with holder trait
Documentation
mod test2;

use std::{fmt::Debug, marker::PhantomData};

use holder::{Holdable, Holder};

fn main() {
    let mut wrapper = Wrapper::<usize> {
        value: Token::<i32>(PhantomData),
        _marker: PhantomData,
        game_state: GameState::Idle,
    };
    let token: &mut Token<i32> = wrapper.token_mut();
    let token: &Token<i32> = wrapper.token();
    let game_state: &GameState = wrapper.game_state();
    let game_state_mut: &mut GameState = wrapper.game_state_mut();
}

#[derive(Holder)]
struct Wrapper<T: Default>
where
    T: Debug,
{
    #[hold]
    value: Token<i32>,
    #[hold(GameStateHolder)]
    game_state: GameState,
    _marker: PhantomData<T>,
}

#[derive(Holdable)]
struct Token<T: Default>(PhantomData<T>)
where
    T: Debug;

#[derive(Holdable)]
enum GameState {
    Idle,
    Play,
}