use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, Hash)]
#[serde(rename_all = "snake_case")]
pub enum SegmentHeading {
Forward,
Backward,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, Hash)]
#[serde(rename_all = "snake_case")]
pub enum SegmentUsing {
AsCustomer,
AtDestination,
ToDeliver,
ToFarm,
ForForestry,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, Hash)]
#[serde(rename_all = "snake_case")]
pub enum SegmentRecognized {
AsPermitted,
AsPrivate,
AsDisabled,
AsEmployee,
AsStudent,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, Hash)]
#[serde(rename_all = "snake_case")]
pub enum SegmentMode {
Vehicle,
MotorVehicle,
Car,
Truck,
Motorcycle,
Foot,
Bicycle,
Bus,
Hgv,
Hov,
Emergency,
}
impl SegmentMode {
pub fn parent(&self) -> Option<SegmentMode> {
match self {
Self::Vehicle => None,
Self::Foot => None,
Self::Bicycle => Some(Self::Vehicle),
Self::MotorVehicle => Some(Self::Vehicle),
Self::Car => Some(Self::MotorVehicle),
Self::Truck => Some(Self::MotorVehicle),
Self::Motorcycle => Some(Self::MotorVehicle),
Self::Bus => Some(Self::MotorVehicle),
Self::Hgv => Some(Self::MotorVehicle),
Self::Hov => Some(Self::MotorVehicle),
Self::Emergency => Some(Self::MotorVehicle),
}
}
}