use clap::ValueEnum;
use serde::{Deserialize, Serialize};
use super::format::{Format, ParseResult, ParseSettings};
#[derive(Debug, Clone, ValueEnum, Default)]
pub enum Schema {
#[default]
Any,
TravelModes,
}
#[derive(Debug, Default, Deserialize, Serialize, PartialEq)]
struct TravelMode {
#[serde(default)]
mode: String,
benefit: Option<String>,
}
impl Schema {
pub fn parse(&self, format: &Format, settings: &ParseSettings, input: &[u8]) -> ParseResult {
match self {
Schema::Any => format.parse::<serde_json::Value>(settings, input),
Schema::TravelModes => format.parse::<Vec<TravelMode>>(settings, input),
}
}
}