From 8c761fe0d4d5a342aa9798feae84d6f8470707fc Mon Sep 17 00:00:00 2001 From: Shadowfacts Date: Sat, 2 Nov 2024 19:21:30 -0400 Subject: [PATCH] Use Input for ValueInvalidationSignal --- crates/compute_graph/src/builder.rs | 2 +- crates/compute_graph/src/lib.rs | 11 ++++------- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/crates/compute_graph/src/builder.rs b/crates/compute_graph/src/builder.rs index 6db8aa8..229721f 100644 --- a/crates/compute_graph/src/builder.rs +++ b/crates/compute_graph/src/builder.rs @@ -117,7 +117,7 @@ impl GraphBuilder { ) -> (Input, ValueInvalidationSignal) { let input = self.add_node(InvalidatableConstNode::new(value)); let signal = ValueInvalidationSignal { - value: Rc::clone(&input.value), + input: input.clone(), signal: self.make_invalidation_signal(&input), }; (input, signal) diff --git a/crates/compute_graph/src/lib.rs b/crates/compute_graph/src/lib.rs index fedac7f..81d9f1e 100644 --- a/crates/compute_graph/src/lib.rs +++ b/crates/compute_graph/src/lib.rs @@ -333,17 +333,14 @@ impl Clone for InvalidationSignal { /// /// See [`GraphBuilder::add_invalidatable_value`]. pub struct ValueInvalidationSignal { - value: Rc>>, + input: Input, signal: InvalidationSignal, } impl ValueInvalidationSignal { /// Get a reference to current value for the node corresponding to this signal. pub fn value(&self) -> impl Deref + '_ { - Ref::map(self.value.borrow(), |opt| { - opt.as_ref() - .expect("invalidatable value node must be initialized with value") - }) + self.input.value() } /// Set a new value for the node corresponding to this signal. @@ -352,7 +349,7 @@ impl ValueInvalidationSignal { /// for the corresponding node. The graph will not be re-evaluated until [`Graph::evaluate`] or /// [`Graph::evaluate_async`] is next called. pub fn set_value(&self, value: V) { - let mut current_value = self.value.borrow_mut(); + let mut current_value = self.input.value.borrow_mut(); if !current_value .as_ref() .expect("invalidatable value node must be initialized with value") @@ -367,7 +364,7 @@ impl ValueInvalidationSignal { impl Clone for ValueInvalidationSignal { fn clone(&self) -> Self { Self { - value: Rc::clone(&self.value), + input: self.input.clone(), signal: self.signal.clone(), } }