diff --git a/examples/pa_doublepass_graph.rs b/examples/pa_doublepass_graph.rs index 4fd83369ffe7e9de206a02c10fd5bb342ecd6e87..d82dff4f8f935897b227e5b1a9bf081a5e751025 100644 --- a/examples/pa_doublepass_graph.rs +++ b/examples/pa_doublepass_graph.rs @@ -13,12 +13,11 @@ fn main() { let n3 = scenery.add_node(OpticNode::new("Faraday", Box::new(NodeDummy))); let n4 = scenery.add_node(OpticNode::new("0° mirror", Box::new(NodeDummy))); - - //let ref_node= NodeReference::new(&Box::new(NodeDummy)); - - let mut node= OpticNode::new("Faraday", Box::new(NodeDummy)); + let mut node= OpticNode::new("Faraday", Box::new(NodeDummy)); node.set_inverted(true); - let n3i=scenery.add_node(node); + let _ref_node= NodeReference::new(&node); + scenery.add_node(node); + //let n3i=scenery.add_node(OpticNode::new("ref", Box::new(ref_node))); let mut node= OpticNode::new("19mm amp", Box::new(NodeDummy)); node.set_inverted(true); @@ -31,8 +30,8 @@ fn main() { scenery.connect_nodes(n1, n2).unwrap(); scenery.connect_nodes(n2, n3).unwrap(); scenery.connect_nodes(n3, n4).unwrap(); - scenery.connect_nodes(n4, n3i).unwrap(); - scenery.connect_nodes(n3i, n2i).unwrap(); + // scenery.connect_nodes(n4, n3i).unwrap(); + // scenery.connect_nodes(n3i, n2i).unwrap(); scenery.connect_nodes(n2i, n1i).unwrap(); let path = "graph.dot"; diff --git a/src/nodes/node_reference.rs b/src/nodes/node_reference.rs index 383144ed30e361e299289669da69e930e1fba245..a19692c815340d651b2856a0b82377c009593d29 100644 --- a/src/nodes/node_reference.rs +++ b/src/nodes/node_reference.rs @@ -2,11 +2,11 @@ use crate::optic_node::{OpticNode, Optical}; /// A virtual component referring to another existing component. This node type is necessary in order to model resonators (loops) or double-pass systems. pub struct NodeReference<'a> { - reference: &'a Box<dyn Optical>, + reference: &'a OpticNode, } impl<'a> NodeReference<'a> { - pub fn new(node: &'a Box<dyn Optical>) -> Self { + pub fn new(node: &'a OpticNode) -> Self { Self { reference: node } } } diff --git a/src/optic_scenery.rs b/src/optic_scenery.rs index 29243d4e15f3c51ff528c4a644b52ff752dacded..dda8b4b8390db3202dfca7a94460fc6b98cf9bef 100644 --- a/src/optic_scenery.rs +++ b/src/optic_scenery.rs @@ -1,5 +1,6 @@ use crate::optic_node::OpticNode; use petgraph::algo::*; +use petgraph::data::DataMap; use petgraph::prelude::{DiGraph, EdgeIndex, NodeIndex}; #[derive(Debug, Clone)]