Macro hooks_core::dyn_hook

source ·
macro_rules! dyn_hook {
    (
        $($lt:lifetime +)?
        $(for < $($generic_lt:lifetime),* $(,)? >)?
        ($($arg:ty),* $(,)?) -> $value:ty
        $(: $($bounds:tt)+)?
    ) => { ... };
}
Expand description

Use this macro to write dyn ErasedHook easily.

let _: Box<dyn_hook![(i32) -> &'hook SharedStateData<i32>]> = Box::new(use_shared_state());

#[hook]
fn use_demo() -> i32 {
    let (state, updater) = use_state(0);
    let updater = updater.clone();
    use_effect(move |v: &i32| {
        if *v < 2 {
            updater.set(*v + 1)
        }
    }, *state);
    *state
}
let _: Box<dyn_hook![() -> i32]> = Box::new(use_demo());

let _: Box<DynNonLendingHook<(), i32>> = Box::new(use_demo());