f1 0.2.0

Get historical and live Formula 1 (F1) data
Documentation
use serde::Deserialize;

#[derive(Deserialize, Clone)]
pub(crate) struct QualiResult {
    pub number: String,
    pub position: String,
    #[serde(rename = "Driver")]
    pub driver: ErgastDriver,
    #[serde(rename = "Constructor")]
    pub constructor: ErgastConstructor,
    #[serde(default)]
    #[serde(rename = "Q1")]
    pub q1_time: String,
    #[serde(default)]
    #[serde(rename = "Q2")]
    pub q2_time: String,
    #[serde(default)]
    #[serde(rename = "Q3")]
    pub q3_time: String,
}

#[derive(Deserialize, Clone)]
pub(crate) struct RaceResult {
    pub number: String,
    pub position: String,
    #[serde(rename = "Driver")]
    pub driver: ErgastDriver,
    #[serde(rename = "Constructor")]
    pub constructor: ErgastConstructor,
    #[serde(default)]
    #[serde(rename = "FastestLap")]
    pub fastest_lap: FastestLap,
}

#[derive(Deserialize, Clone, Default)]
pub(crate) struct FastestLap {
    #[serde(default)]
    #[serde(rename = "Time")]
    pub time: Time,
}

#[derive(Deserialize, Clone, Default)]
pub(crate) struct Time {
    pub time: String,
}

#[derive(Deserialize, Clone, Default)]
pub(crate) struct ErgastCircuit {
    #[serde(rename = "circuitId")]
    pub id: String,
    #[serde(rename = "circuitName")]
    pub name: String,
    #[serde(rename = "Location")]
    pub location: Location,
}

#[derive(Deserialize, Clone, Default)]
pub(crate) struct Location {
    pub lat: String,
    pub long: String,
    pub locality: String,
    pub country: String,
}

#[derive(Deserialize, Clone)]
pub(crate) struct ErgastDriver {
    #[serde(rename = "driverId")]
    pub driver_id: String,
    #[serde(rename = "permanentNumber")]
    pub permanent_number: String,
    pub code: String,
    #[serde(rename = "givenName")]
    pub given_name: String,
    #[serde(rename = "familyName")]
    pub family_name: String,
    #[serde(rename = "dateOfBirth")]
    pub date_of_birth: String,
    pub nationality: String,
}

#[derive(Deserialize, Clone)]
pub(crate) struct ErgastConstructor {
    #[serde(rename = "constructorId")]
    pub constructor_id: String,
    pub name: String,
    pub nationality: String,
}