From 04ab1ce69bfbbf2a0d244d7ec900edfc569d3093 Mon Sep 17 00:00:00 2001 From: Alain Emilia Anna Zscheile Date: Sat, 5 Oct 2024 23:10:08 +0200 Subject: [PATCH] router: TraceStepper is not a real stepper Contributes towards solving #82 properly later. --- src/router/router.rs | 1 - src/router/trace.rs | 35 +++++++++++++++-------------------- src/router/tracer.rs | 16 ---------------- 3 files changed, 15 insertions(+), 37 deletions(-) diff --git a/src/router/router.rs b/src/router/router.rs index 239ee1c..ffac380 100644 --- a/src/router/router.rs +++ b/src/router/router.rs @@ -19,7 +19,6 @@ use crate::{ }, graph::{GetPetgraphIndex, MakeRef}, layout::Layout, - stepper::{Step, StepBack}, }; use super::{ diff --git a/src/router/trace.rs b/src/router/trace.rs index 9073092..4b0ef2b 100644 --- a/src/router/trace.rs +++ b/src/router/trace.rs @@ -1,21 +1,17 @@ use contracts::debug_ensures; use petgraph::data::DataMap; -use crate::{ - drawing::{ - bend::LooseBendIndex, - dot::FixedDotIndex, - graph::PrimitiveIndex, - head::{BareHead, CaneHead, Head}, - rules::AccessRules, - }, - stepper::{Step, StepBack}, +use crate::drawing::{ + bend::LooseBendIndex, + dot::FixedDotIndex, + graph::PrimitiveIndex, + head::{BareHead, CaneHead, Head}, + rules::AccessRules, }; use super::{ draw::Draw, navmesh::{BinavvertexNodeIndex, Navmesh, NavvertexIndex}, - tracer::TracerStatus, tracer::{Tracer, TracerException}, }; @@ -104,16 +100,14 @@ pub struct TraceStepContext<'a: 'b, 'b, R: AccessRules> { pub width: f64, } -impl<'a, 'b, R: AccessRules> Step, TracerStatus, TracerException, ()> - for TraceStepper -{ +impl TraceStepper { #[debug_ensures(ret.is_ok() -> matches!(self.head, Head::Cane(..)))] #[debug_ensures(ret.is_ok() -> self.path.len() == old(self.path.len() + 1))] #[debug_ensures(ret.is_err() -> self.path.len() == old(self.path.len()))] - fn step( + pub fn step<'a, 'b, R: AccessRules>( &mut self, input: &mut TraceStepContext<'a, 'b, R>, - ) -> Result { + ) -> Result<(), TracerException> { self.head = self .wrap( input.tracer, @@ -125,13 +119,14 @@ impl<'a, 'b, R: AccessRules> Step, TracerStatus, Tra .into(); self.path.push(input.to); - Ok(TracerStatus::Running) + Ok(()) } -} -impl<'a, R: AccessRules> StepBack, TracerStatus, TracerException> for TraceStepper { #[debug_ensures(self.path.len() == old(self.path.len() - 1))] - fn step_back(&mut self, tracer: &mut Tracer<'a, R>) -> Result { + pub fn step_back<'a, R: AccessRules>( + &mut self, + tracer: &mut Tracer<'a, R>, + ) -> Result<(), TracerException> { if let Head::Cane(head) = self.head { self.head = Draw::new(tracer.layout).undo_cane(head).unwrap(); } else { @@ -139,6 +134,6 @@ impl<'a, R: AccessRules> StepBack, TracerStatus, TracerException> } self.path.pop(); - Ok(TracerStatus::Running) + Ok(()) } } diff --git a/src/router/tracer.rs b/src/router/tracer.rs index d8dc2b7..15bf1d5 100644 --- a/src/router/tracer.rs +++ b/src/router/tracer.rs @@ -4,7 +4,6 @@ use thiserror::Error; use crate::{ drawing::{band::BandTermsegIndex, dot::FixedDotIndex, rules::AccessRules}, layout::Layout, - stepper::{Step, StepBack}, }; use super::{ @@ -21,21 +20,6 @@ pub enum TracerException { CannotWrap, } -pub enum TracerStatus { - Running, - Finished, -} - -impl TryInto<()> for TracerStatus { - type Error = (); - fn try_into(self) -> Result<(), ()> { - match self { - TracerStatus::Running => Err(()), - TracerStatus::Finished => Ok(()), - } - } -} - #[derive(Debug)] pub struct Tracer<'a, R: AccessRules> { pub layout: &'a mut Layout,