Macro dyn_context::Context[][src]

macro_rules! Context {
    (
        ()
        $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)*
    ) => { ... };
}

A macro attribute deriving trivial Context implementation. A trivial-implemented context is a context containing itself only.

Examples

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

fn get_data_from_context(context: &dyn Context) -> u16 {
    let some_data: &SomeData = context.get();
    some_data.data
}

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