use crate::*;
#[derive(CustomDebug, Data, Default, New)]
pub(crate) struct HookContextInner {
#[debug(skip)]
#[get(pub(crate))]
#[set(pub(crate))]
pub(crate) hooks: Vec<Box<dyn Any>>,
#[get(pub(crate), type(copy))]
#[set(pub(crate))]
pub(crate) arm_changed: usize,
#[get(pub(crate), type(copy))]
#[set(pub(crate))]
pub(crate) hook_index: usize,
#[debug(skip)]
#[get(pub(crate))]
#[set(pub(crate))]
pub(crate) cleanups: Vec<Box<dyn FnOnce()>>,
}
#[derive(CustomDebug, Data, New)]
pub struct HookContext {
#[debug(skip)]
#[get(pub(crate))]
#[set(pub(crate))]
pub(crate) inner: Rc<RefCell<HookContextInner>>,
}
#[derive(Clone, Copy, Data, New)]
pub struct IntervalHandle {
#[get(pub, type(copy))]
#[set(pub)]
pub interval_id: i32,
}