From 3e9e3c69c9310d94c28bbb089203bbefb7fbab0f Mon Sep 17 00:00:00 2001 From: Mikolaj Wielgus Date: Thu, 10 Oct 2024 23:58:39 +0200 Subject: [PATCH] refactor(egui): make `ActivityContext` generic over mesadata type --- src/bin/topola-egui/activity.rs | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/bin/topola-egui/activity.rs b/src/bin/topola-egui/activity.rs index cf48732..2475112 100644 --- a/src/bin/topola-egui/activity.rs +++ b/src/bin/topola-egui/activity.rs @@ -7,10 +7,10 @@ use topola::{ InvokerStatus, }, }, + board::mesadata::AccessMesadata, drawing::graph::PrimitiveIndex, geometry::primitive::PrimitiveShape, router::{navcord::NavcordStepper, navmesh::Navmesh}, - specctra::mesadata::SpecctraMesadata, stepper::{Abort, Step}, }; @@ -18,9 +18,9 @@ use crate::interaction::{ InteractionContext, InteractionError, InteractionStatus, InteractionStepper, }; -pub struct ActivityContext<'a> { +pub struct ActivityContext<'a, M: AccessMesadata> { pub interaction: InteractionContext, - pub invoker: &'a mut Invoker, + pub invoker: &'a mut Invoker, } #[derive(Debug, Clone)] @@ -70,8 +70,10 @@ pub enum ActivityStepper { Execution(ExecutionStepper), } -impl Step, ActivityStatus, ActivityError, ()> for ActivityStepper { - fn step(&mut self, context: &mut ActivityContext) -> Result { +impl Step, ActivityStatus, ActivityError, ()> + for ActivityStepper +{ + fn step(&mut self, context: &mut ActivityContext) -> Result { match self { ActivityStepper::Interaction(interaction) => { Ok(interaction.step(&mut context.interaction)?.into()) @@ -81,8 +83,8 @@ impl Step, ActivityStatus, ActivityError, ()> for ActivitySt } } -impl Abort> for ActivityStepper { - fn abort(&mut self, context: &mut ActivityContext) { +impl Abort> for ActivityStepper { + fn abort(&mut self, context: &mut ActivityContext) { match self { ActivityStepper::Interaction(interaction) => { Ok(interaction.abort(&mut context.interaction)) @@ -150,16 +152,18 @@ impl ActivityStepperWithStatus { } } -impl Step, ActivityStatus, ActivityError, ()> for ActivityStepperWithStatus { - fn step(&mut self, context: &mut ActivityContext) -> Result { +impl Step, ActivityStatus, ActivityError, ()> + for ActivityStepperWithStatus +{ + fn step(&mut self, context: &mut ActivityContext) -> Result { let status = self.activity.step(context)?; self.maybe_status = Some(status.clone()); Ok(status.into()) } } -impl Abort> for ActivityStepperWithStatus { - fn abort(&mut self, context: &mut ActivityContext) { +impl Abort> for ActivityStepperWithStatus { + fn abort(&mut self, context: &mut ActivityContext) { self.maybe_status = Some(ActivityStatus::Finished(String::from("aborted"))); self.activity.abort(context); }