pub fn new_fn_hook<Args, Data, H: for<'a> HookLifetime<'a, Args>>(
    data: Data,
    poll_next_update: impl Fn(Pin<&mut Data>, &mut Context<'_>) -> Poll<bool>,
    use_hook: impl for<'hook> Fn(Pin<&'hook mut Data>, Args) -> <H as HookLifetime<'hook, Args>>::Value
) -> FnHook<Data, impl Fn(Pin<&mut Data>, &mut Context<'_>) -> Poll<bool>, impl for<'hook> Fn(Pin<&'hook mut Data>, Args) -> <H as HookLifetime<'hook, Args>>::Value, H>