use serde::{Deserialize, Serialize};
use super::{
access_restriction_when::SegmentAccessRestrictionWhen,
mode::{SegmentHeading, SegmentMode},
};
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct SegmentDestination {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub labels: Option<Vec<SegmentDestinationLabel>>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub symbols: Option<Vec<SegmentSymbol>>,
pub from_connector_id: String,
pub to_segment_id: String,
pub to_connector_id: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub when: Option<SegmentDestinationWhen>,
pub final_heading: SegmentHeading,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
#[serde(rename_all = "snake_case")]
pub enum SegmentSymbol {
Motorway,
Airport,
Hospital,
Center,
Industrial,
Parking,
Bus,
TrainStation,
RestArea,
Ferry,
Motorroad,
Fuel,
Viewpoint,
FuelDiesel,
Food,
Lodging,
Info,
CampSite,
Interchange,
Restrooms,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct SegmentDestinationLabel {
pub value: String,
pub r#type: SegmentDestinationLabelType,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
#[serde(rename_all = "snake_case")]
pub enum SegmentDestinationLabelType {
Street,
Country,
RouteRef,
TowardRouteRef,
Unknown,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct SegmentDestinationWhen {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub heading: Option<SegmentHeading>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub mode: Option<Vec<SegmentMode>>,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct SegmentProhibitedTransitions {
#[serde(skip_serializing_if = "Option::is_none", default)]
sequence: Option<Vec<SegmentProhibitedTransitionsSequence>>,
#[serde(skip_serializing_if = "Option::is_none", default)]
final_heading: Option<SegmentHeading>,
#[serde(skip_serializing_if = "Option::is_none", default)]
when: Option<SegmentAccessRestrictionWhen>,
#[serde(skip_serializing_if = "Option::is_none", default)]
between: Option<Vec<f64>>,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct SegmentProhibitedTransitionsSequence {
#[serde(skip_serializing_if = "Option::is_none", default)]
connector: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
segment: Option<String>,
}