pub mod auto;
pub mod bicycle;
pub mod motor_scooter;
pub mod motorcycle;
pub mod multimodal;
pub mod pedestrian;
pub mod transit;
pub mod truck;
pub use auto::AutoCostingOptions;
pub use bicycle::BicycleCostingOptions;
pub use motor_scooter::MotorScooterCostingOptions;
pub use motorcycle::MotorcycleCostingOptions;
pub use multimodal::MultimodalCostingOptions;
pub use pedestrian::PedestrianCostingOptions;
use serde::Serialize;
pub use transit::TransitCostingOptions;
pub use truck::TruckCostingOptions;
#[derive(Serialize, Clone, Debug, PartialEq)]
#[serde(tag = "costing", content = "costing_options")]
#[allow(clippy::large_enum_variant)]
pub enum Costing {
#[serde(rename = "auto")]
Auto(AutoCostingOptions),
#[serde(rename = "bicycle")]
Bicycle(BicycleCostingOptions),
#[serde(rename = "bus")]
Bus(AutoCostingOptions),
#[serde(rename = "bikeshare")]
Bikeshare(BicycleCostingOptions),
#[serde(rename = "truck")]
Truck(TruckCostingOptions),
#[serde(rename = "taxi")]
Taxi(AutoCostingOptions),
#[serde(rename = "motor_scooter")]
MotorScooter(MotorScooterCostingOptions),
#[serde(rename = "motorcycle")]
Motorcycle(MotorcycleCostingOptions),
#[serde(rename = "multimodal")]
Multimodal(MultimodalCostingOptions),
#[serde(rename = "pedestrian")]
Pedestrian(PedestrianCostingOptions),
}
impl Default for Costing {
fn default() -> Self {
Self::Auto(Default::default())
}
}
#[cfg(test)]
mod test {
use super::*;
#[test]
fn serialisation() {
assert_eq!(
serde_json::to_value(Costing::default()).unwrap(),
serde_json::json!({"costing": "auto", "costing_options": {"auto":{}}})
);
}
}