diff --git a/src/autorouter/autorouter.rs b/src/autorouter/autorouter.rs index c8c97b1..091c0c4 100644 --- a/src/autorouter/autorouter.rs +++ b/src/autorouter/autorouter.rs @@ -110,7 +110,7 @@ impl Autorouter { &self, selection: &BandSelection, ) -> Result { - RemoveBandsExecutionStepper::new(selection) + RemoveBandsExecutionStepper::new(selection.clone()) } pub fn undo_remove_bands(&mut self, _selection: &BandSelection) { diff --git a/src/autorouter/measure_length.rs b/src/autorouter/measure_length.rs index 12c1366..d78b53e 100644 --- a/src/autorouter/measure_length.rs +++ b/src/autorouter/measure_length.rs @@ -22,11 +22,7 @@ impl EvalImmut, f64> for MeasureLength { let mut length = 0.0; for selector in self.0.selectors() { - let band = autorouter - .board - .bandname_band(selector.band.clone()) - .unwrap() - .0; + let band = autorouter.board.bandname_band(&selector.band).unwrap().0; length += band.ref_(autorouter.board.layout().drawing()).length(); } diff --git a/src/autorouter/remove_bands.rs b/src/autorouter/remove_bands.rs index 272ca66..b7fd4b5 100644 --- a/src/autorouter/remove_bands.rs +++ b/src/autorouter/remove_bands.rs @@ -3,12 +3,7 @@ //! to remove selected bands, and implements necessary traits for working //! with navigation meshes, traces, and obstacles. -use crate::{ - board::mesadata::AccessMesadata, - drawing::graph::PrimitiveIndex, - geometry::primitive::PrimitiveShape, - router::{navmesh::Navmesh, trace::TraceStepper}, -}; +use crate::board::mesadata::AccessMesadata; use super::{ invoker::{GetGhosts, GetMaybeNavmesh, GetMaybeTrace, GetObstacles}, @@ -23,7 +18,7 @@ pub struct RemoveBandsExecutionStepper { } impl RemoveBandsExecutionStepper { - pub fn new(selection: &BandSelection) -> Result { + pub fn new(selection: BandSelection) -> Result { Ok(Self { selection: selection.clone(), done: false, @@ -38,40 +33,18 @@ impl RemoveBandsExecutionStepper { self.done = true; for selector in self.selection.selectors() { - let band = autorouter - .board - .bandname_band(selector.band.clone()) - .unwrap() - .0; + let band = autorouter.board.bandname_band(&selector.band).unwrap().0; autorouter.board.layout_mut().remove_band(band); } - Ok(()) - } else { - Ok(()) } + Ok(()) } } -impl GetMaybeNavmesh for RemoveBandsExecutionStepper { - fn maybe_navmesh(&self) -> Option<&Navmesh> { - None - } -} +impl GetMaybeNavmesh for RemoveBandsExecutionStepper {} -impl GetMaybeTrace for RemoveBandsExecutionStepper { - fn maybe_trace(&self) -> Option<&TraceStepper> { - None - } -} +impl GetMaybeTrace for RemoveBandsExecutionStepper {} -impl GetGhosts for RemoveBandsExecutionStepper { - fn ghosts(&self) -> &[PrimitiveShape] { - &[] - } -} +impl GetGhosts for RemoveBandsExecutionStepper {} -impl GetObstacles for RemoveBandsExecutionStepper { - fn obstacles(&self) -> &[PrimitiveIndex] { - &[] - } -} +impl GetObstacles for RemoveBandsExecutionStepper {} diff --git a/src/autorouter/selection.rs b/src/autorouter/selection.rs index b060328..bac60b5 100644 --- a/src/autorouter/selection.rs +++ b/src/autorouter/selection.rs @@ -63,7 +63,7 @@ impl PinSelection { }; if let (Some(pinname), Some(layername)) = ( - board.node_pinname(node), + board.node_pinname(&node), board.layout().rules().layer_layername(layer), ) { Some(PinSelector { @@ -125,11 +125,9 @@ impl BandSelection { _ => return None, }; - Some(BandSelector { - band: board - .band_bandname(board.layout().drawing().collect().loose_band_uid(loose))? - .clone(), - }) + board + .band_bandname(&board.layout().drawing().collect().loose_band_uid(loose)) + .map(|band| BandSelector { band: band.clone() }) } fn select(&mut self, selector: BandSelector) { diff --git a/src/board/board.rs b/src/board/board.rs index 6799b76..b12597d 100644 --- a/src/board/board.rs +++ b/src/board/board.rs @@ -86,7 +86,7 @@ impl Board { ) -> FixedDotIndex { let dot = self.layout.add_poly_fixed_dot_infringably(weight, poly); - if let Some(pin) = self.node_pinname(GenericNode::Compound(poly.into())) { + if let Some(pin) = self.node_pinname(&GenericNode::Compound(poly.into())) { self.node_to_pinname .insert(GenericNode::Primitive(dot.into()), pin.to_string()); } @@ -128,7 +128,7 @@ impl Board { .layout .add_poly_fixed_seg_infringably(from, to, weight, poly); - if let Some(pin) = self.node_pinname(GenericNode::Compound(poly.into())) { + if let Some(pin) = self.node_pinname(&GenericNode::Compound(poly.into())) { self.node_to_pinname .insert(GenericNode::Primitive(seg.into()), pin.to_string()); } @@ -176,18 +176,18 @@ impl Board { } /// Returns the pin name associated with a given node. - pub fn node_pinname(&self, node: NodeIndex) -> Option<&String> { - self.node_to_pinname.get(&node) + pub fn node_pinname(&self, node: &NodeIndex) -> Option<&String> { + self.node_to_pinname.get(node) } /// Returns the band name associated with a given band. - pub fn band_bandname(&self, band: BandUid) -> Option<&BandName> { - self.band_bandname.get_by_left(&band) + pub fn band_bandname(&self, band: &BandUid) -> Option<&BandName> { + self.band_bandname.get_by_left(band) } /// Returns the unique id associated with a given band name. - pub fn bandname_band(&self, bandname: BandName) -> Option<&BandUid> { - self.band_bandname.get_by_right(&bandname) + pub fn bandname_band(&self, bandname: &BandName) -> Option<&BandUid> { + self.band_bandname.get_by_right(bandname) } /// Creates band between the two nodes @@ -198,11 +198,11 @@ impl Board { band: BandUid, ) { let source_pinname = self - .node_pinname(GenericNode::Primitive(source.into())) + .node_pinname(&GenericNode::Primitive(source.into())) .unwrap() .to_string(); let target_pinname = self - .node_pinname(GenericNode::Primitive(target.into())) + .node_pinname(&GenericNode::Primitive(target.into())) .unwrap() .to_string(); self.band_bandname