use crate::*;
#[derive(CustomDebug, Data, New)]
pub(crate) struct RenderEffectInner {
#[debug(skip)]
#[get(pub(crate))]
#[set(pub(crate))]
pub(crate) effect_fn: Box<dyn FnMut()>,
#[get(pub(crate))]
#[set(pub(crate))]
pub(crate) dependencies: Vec<usize>,
#[get(pub(crate), type(copy))]
#[set(pub(crate))]
pub(crate) running: bool,
#[get(pub(crate), type(copy))]
#[set(pub(crate))]
pub(crate) disposed: bool,
}
#[derive(Clone, CustomDebug, Data, New)]
pub struct RenderEffect {
#[debug(skip)]
#[get(pub(crate))]
#[set(pub(crate))]
pub(crate) inner: Rc<RefCell<RenderEffectInner>>,
}
#[derive(Data, Debug, New)]
pub(crate) struct EffectSubscribersCell(
#[get(pub(crate))]
#[set(pub(crate))]
pub(crate) UnsafeCell<Option<HashMap<usize, Vec<usize>>>>,
);
#[derive(Data, Debug, New)]
pub(crate) struct CurrentEffectCell(
#[get(pub(crate))]
#[set(pub(crate))]
pub(crate) UnsafeCell<Option<usize>>,
);
#[derive(Data, Debug, New)]
pub(crate) struct RenderEffectRegistryCell(
#[get(pub(crate))]
#[set(pub(crate))]
pub(crate) UnsafeCell<Option<HashMap<usize, Rc<RefCell<RenderEffectInner>>>>>,
);