Macro dyn_context::State[][src]

macro_rules! State {
    (
        ()
        $vis:vis struct $name:ident $($body:tt)*
    ) => { ... };
    (
        ()
        $vis:vis enum $name:ident $($body:tt)*
    ) => { ... };
    (
        @impl [$name:ident] [$($g:tt)*] [$($r:tt)*] [$($w:tt)*] $($body:tt)*
    ) => { ... };
}
Expand description

A macro attribute deriving trivial State implementation. A trivial-implemented state is a state containing itself only.

Examples

macro_attr! {
    #[derive(State!)]
    struct SomeData {
        data: u16,
    }
}

fn get_data_from_state(state: &dyn State) -> u16 {
    let some_data: &SomeData = state.get();
    some_data.data
}

let some_data = SomeData { data: 7 };
let data_from_state = get_data_from_state(&some_data);
assert_eq!(data_from_state, 7);