From cea0b70a51d73c9eda7b2cf83451ca328182f0a8 Mon Sep 17 00:00:00 2001 From: stuebinm Date: Sat, 26 Feb 2022 11:37:00 +0100 Subject: fix the Trip type (and make it Display) it's not as nice as i'd like, but whatever --- src/onboard/iceportal.rs | 12 ++++++------ src/onboard/mod.rs | 5 ++--- src/onboard/zugportal.rs | 8 ++++---- 3 files changed, 12 insertions(+), 13 deletions(-) (limited to 'src/onboard') diff --git a/src/onboard/iceportal.rs b/src/onboard/iceportal.rs index bc97261..bde0b1f 100644 --- a/src/onboard/iceportal.rs +++ b/src/onboard/iceportal.rs @@ -8,12 +8,14 @@ use crate::onboard; use crate::onboard::{OnBoardAPI, OnBoardInfo}; use crate::{serde::*, traits::*, travelynx::TrainRef}; +use crate::types::Trip; + pub struct Iceportal {} #[derive(Deserialize, Debug)] #[serde(rename_all = "camelCase")] pub struct TripInfo { - trip: Trip, + trip: IceTrip, connection: Option, selected_route: Option, active: Option @@ -21,7 +23,7 @@ pub struct TripInfo { #[derive(Deserialize, Debug)] #[serde(rename_all = "camelCase")] -struct Trip { +struct IceTrip { train_type: String, vzn: String, // train number // some position info here @@ -100,10 +102,8 @@ impl OnBoardInfo for TripInfo { } } - fn stops<'a>( - &'a self - ) -> Box + 'a> { - Box::new(self.trip.stops.iter().map(|s| s as &dyn IsStation)) + fn stops<'a>(&'a self) -> Trip<'a> { + (&self.trip.stops).into() } } diff --git a/src/onboard/mod.rs b/src/onboard/mod.rs index 56bd144..b6717e8 100644 --- a/src/onboard/mod.rs +++ b/src/onboard/mod.rs @@ -1,5 +1,6 @@ use crate::traits::IsStation; use crate::travelynx::TrainRef; +use crate::types::Trip; use serde::de::DeserializeOwned; pub mod iceportal; @@ -47,9 +48,7 @@ pub trait OnBoardInfo { fn get_train_ref(&self) -> TrainRef; - fn stops<'a>( - &'a self - ) -> Box + 'a>; + fn stops<'a>(&'a self) -> Trip<'a>; } fn get_request(uri: &str) -> Result diff --git a/src/onboard/zugportal.rs b/src/onboard/zugportal.rs index 0ad6cfd..c649107 100644 --- a/src/onboard/zugportal.rs +++ b/src/onboard/zugportal.rs @@ -7,6 +7,8 @@ use crate::onboard; use crate::onboard::{OnBoardAPI, OnBoardInfo}; use crate::{traits::*, travelynx::TrainRef}; +use crate::types::Trip; + pub struct Zugportal {} #[derive(Deserialize, Debug)] @@ -88,10 +90,8 @@ impl OnBoardInfo for Journey { } } - fn stops<'a>( - &'a self - ) -> Box + 'a> { - Box::new(self.stops.iter().map(|s| s as &dyn IsStation)) + fn stops<'a>(&'a self) -> Trip<'a> { + (&self.stops).into() } } -- cgit v1.2.3