diff options
author | stuebinm | 2022-02-26 11:37:00 +0100 |
---|---|---|
committer | stuebinm | 2022-02-26 11:37:00 +0100 |
commit | cea0b70a51d73c9eda7b2cf83451ca328182f0a8 (patch) | |
tree | ccf922311e9816a0c69be4549a9a433d68f9d180 /src/onboard | |
parent | c63d08361e056db38b0670b93e2c4af8fcab2b5b (diff) |
fix the Trip type (and make it Display)
it's not as nice as i'd like, but whatever
Diffstat (limited to '')
-rw-r--r-- | src/onboard/iceportal.rs | 12 | ||||
-rw-r--r-- | src/onboard/mod.rs | 5 | ||||
-rw-r--r-- | src/onboard/zugportal.rs | 8 |
3 files changed, 12 insertions, 13 deletions
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<Value>, selected_route: Option<Value>, active: Option<Value> @@ -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<dyn std::iter::Iterator<Item = &'a dyn IsStation> + '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<dyn std::iter::Iterator<Item = &'a dyn IsStation> + 'a>; + fn stops<'a>(&'a self) -> Trip<'a>; } fn get_request<R>(uri: &str) -> Result<R, (serde_json::Error, String)> 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<dyn std::iter::Iterator<Item = &'a dyn IsStation> + 'a> { - Box::new(self.stops.iter().map(|s| s as &dyn IsStation)) + fn stops<'a>(&'a self) -> Trip<'a> { + (&self.stops).into() } } |