diff --git a/node-graph/gcore/src/structural.rs b/node-graph/gcore/src/structural.rs index cdba7eade4..cbdd8beb17 100644 --- a/node-graph/gcore/src/structural.rs +++ b/node-graph/gcore/src/structural.rs @@ -128,11 +128,11 @@ impl<'i, Root: Node<'i, I>, I: 'i + From<()>> ConsNode { mod test { use super::*; use crate::generic::FnNode; - use crate::value::ClonedNode; + use crate::value::ValueRefNode; #[test] fn compose() { - let value = ClonedNode::new(4u32); + let value = ValueRefNode::new(4u32); let compose = value.then(FnNode::new(|x| x)); assert_eq!(compose.eval(()), &4u32); let type_erased = &compose as &dyn Node<'_, (), Output = &'_ u32>; @@ -141,7 +141,7 @@ mod test { #[test] fn test_ref_eval() { - let value = ClonedNode::new(5); + let value = ValueRefNode::new(5); assert_eq!(value.eval(()), &5); let id = FnNode::new(|x| x); diff --git a/node-graph/gcore/src/value.rs b/node-graph/gcore/src/value.rs index 9f38a2c92f..453fd1eaae 100644 --- a/node-graph/gcore/src/value.rs +++ b/node-graph/gcore/src/value.rs @@ -13,6 +13,29 @@ impl<'i, const N: u32, I> Node<'i, I> for IntNode { } } +#[derive(Default, Debug, Clone, Copy)] +pub struct ValueRefNode(pub T); + +impl<'i, T: 'i, I> Node<'i, I> for ValueRefNode { + type Output = &'i T; + #[inline(always)] + fn eval(&'i self, _input: I) -> Self::Output { + &self.0 + } +} + +impl ValueRefNode { + pub const fn new(value: T) -> ValueRefNode { + ValueRefNode(value) + } +} + +impl From for ValueRefNode { + fn from(value: T) -> Self { + ValueRefNode::new(value) + } +} + #[derive(Default, Debug, Clone, Copy)] pub struct AsRefNode, U>(pub T, PhantomData); diff --git a/node-graph/graph-craft/src/proto.rs b/node-graph/graph-craft/src/proto.rs index fc35f7717f..7a5e55ec67 100644 --- a/node-graph/graph-craft/src/proto.rs +++ b/node-graph/graph-craft/src/proto.rs @@ -950,12 +950,12 @@ mod test { assert_eq!( ids, vec![ - NodeId(16997244687192517417), - NodeId(12226224850522777131), - NodeId(9162113827627229771), - NodeId(12793582657066318419), - NodeId(16945623684036608820), - NodeId(2640415155091892458) + NodeId(12524483273268761808), + NodeId(14274752063205226537), + NodeId(7177002187999680489), + NodeId(17211043138366459510), + NodeId(6979825042154430163), + NodeId(2888425170017482846) ] ); }