From c2cd565a9b1f0478a5474affcaefaa35c4bbda05 Mon Sep 17 00:00:00 2001 From: Mikolaj Wielgus Date: Tue, 2 Sep 2025 22:32:49 +0200 Subject: [PATCH] refactor(drawing/gear): Remove `GetPrevNextInChain` trait It wasn't helpful after all. --- src/drawing/gear.rs | 23 ----------------------- src/drawing/primitive.rs | 31 ------------------------------- 2 files changed, 54 deletions(-) diff --git a/src/drawing/gear.rs b/src/drawing/gear.rs index f1eaafb..9b755d7 100644 --- a/src/drawing/gear.rs +++ b/src/drawing/gear.rs @@ -83,29 +83,6 @@ pub trait WalkOutwards { fn outwards(&self) -> DrawingOutwardWalker; } -//#[enum_dispatch] -pub trait GetPrevNextInChain { - fn next_in_chain(&self, maybe_prev: Option) -> Option; - - fn prev_in_chain(&self, maybe_next: Option) -> Option { - // Just as in the `GetPrevNextLoose` trait. - let maybe_prev = maybe_next.or_else(|| self.next_in_chain(None)); - self.next_in_chain(maybe_prev) - } -} - -// Because types have trait bounds, we cannot use enum_dispatch and instead we -// implement `GetPrevNextInChain` explicitly. -impl<'a, CW: Clone, Cel: Copy, R: AccessRules> GetPrevNextInChain for GearRef<'a, CW, Cel, R> { - fn next_in_chain(&self, maybe_prev: Option) -> Option { - match self { - GearRef::FixedDot(dot) => dot.next_in_chain(maybe_prev), - GearRef::FixedBend(bend) => bend.next_in_chain(maybe_prev), - GearRef::LooseBend(bend) => bend.next_in_chain(maybe_prev), - } - } -} - /// I found it easier to just duplicate `OutwardWalker` for `Drawing<...>`. pub struct DrawingOutwardWalker { frontier: VecDeque, diff --git a/src/drawing/primitive.rs b/src/drawing/primitive.rs index 93d8d6c..4d7f79f 100644 --- a/src/drawing/primitive.rs +++ b/src/drawing/primitive.rs @@ -9,7 +9,6 @@ use crate::{ drawing::{ bend::{BendIndex, FixedBendWeight, LooseBendIndex, LooseBendWeight}, dot::{DotIndex, DotWeight, FixedDotIndex, FixedDotWeight, LooseDotIndex, LooseDotWeight}, - gear::{GearIndex, GetPrevNextInChain}, graph::{GetMaybeNet, PrimitiveIndex, PrimitiveWeight}, rules::{AccessRules, Conditions, GetConditions}, seg::{FixedSegWeight, LoneLooseSegWeight, SegIndex, SeqLooseSegIndex, SeqLooseSegWeight}, @@ -292,24 +291,6 @@ impl GetOuterGears for FixedDot<'_, CW, Cel, R> { } } -impl GetPrevNextInChain for FixedDot<'_, CW, Cel, R> { - fn next_in_chain(&self, maybe_prev: Option) -> Option { - self.drawing - .overlapees(self.index.into()) - .find_map(|infringement| { - let PrimitiveIndex::FixedDot(intersectee) = infringement.1 else { - return None; - }; - - if let Some(prev) = maybe_prev { - (infringement.1 == prev.into()).then_some(intersectee.into()) - } else { - Some(intersectee.into()) - } - }) - } -} - impl WalkOutwards for FixedDot<'_, CW, Cel, R> { fn outwards(&self) -> DrawingOutwardWalker { DrawingOutwardWalker::new(self.lowest_gears().into_iter()) @@ -476,12 +457,6 @@ impl GetOuterGears for FixedBend<'_, CW, Cel, R> { } } -impl GetPrevNextInChain for FixedBend<'_, CW, Cel, R> { - fn next_in_chain(&self, _maybe_prev: Option) -> Option { - None - } -} - impl WalkOutwards for FixedBend<'_, CW, Cel, R> { fn outwards(&self) -> DrawingOutwardWalker { DrawingOutwardWalker::new(self.lowest_gears().into_iter()) @@ -535,12 +510,6 @@ impl GetOuterGears for LooseBend<'_, CW, Cel, R> { } } -impl GetPrevNextInChain for LooseBend<'_, CW, Cel, R> { - fn next_in_chain(&self, _maybe_prev: Option) -> Option { - None - } -} - impl WalkOutwards for LooseBend<'_, CW, Cel, R> { fn outwards(&self) -> DrawingOutwardWalker { DrawingOutwardWalker::new(self.outers())