pub struct ReactiveNode {
pub owner: Owner,
pub data: NodeData,
pub sources: HashSet<NodeId>,
pub subscribers: HashSet<NodeId>,
pub arc_sources: Vec<Rc<dyn ArcSubscription>>,
}Expand description
One node in the reactive graph.
sources records what this node read in its last run (downstream
dependencies); subscribers records who reads us. Both sets are
kept in sync by the effect/computed runner — on each re-run, the runner
re-derives sources by tracking signal reads during the closure,
then sets subscribers on the new sources symmetrically.
arc_sources is the equivalent for ArcSignal-family reads: Arc-
backed signals don’t live in the arena, so they can’t be referenced
by NodeId. Instead, each Arc signal whose value this node read
hands the node a Rc<dyn ArcSubscription> clone of its inner; on
re-run / disposal, the node iterates this list to tell each signal
“drop me from your subscriber list” via ArcSubscription::unsubscribe.
The signal itself stays alive (Arc refcount) regardless.
Fields§
§owner: Owner§data: NodeData§sources: HashSet<NodeId>§subscribers: HashSet<NodeId>§arc_sources: Vec<Rc<dyn ArcSubscription>>