pitwall 0.1.0

Modern, type-safe Rust library for iRacing telemetry data
Documentation
//! Split timing and sector information
//!
//! This module contains timing-related structures for split times and
//! sector information.

use serde::{Deserialize, Serialize};

#[cfg(feature = "schema-discovery")]
use std::collections::HashMap;

/// Split timing information
#[derive(Default, Debug, Clone, Serialize, Deserialize, PartialEq)]
#[cfg_attr(feature = "tauri", derive(specta::Type))]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
pub struct SplitTimeInfo {
    /// Sector information
    pub sectors: Option<Vec<Sector>>,
    /// Unknown fields discovered during parsing (requires schema-discovery feature)
    #[cfg(feature = "schema-discovery")]
    #[serde(flatten)]
    #[serde(skip_serializing_if = "HashMap::is_empty")]
    #[cfg_attr(feature = "tauri", specta(skip))]
    pub unknown_fields: HashMap<String, serde_yaml_ng::Value>,
}

/// Individual sector timing information
#[derive(Default, Debug, Clone, Serialize, Deserialize, PartialEq)]
#[cfg_attr(feature = "tauri", derive(specta::Type))]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
pub struct Sector {
    /// Sector number
    pub sector_num: Option<i32>,
    /// Sector start percentage along track
    pub sector_start_pct: Option<f64>,
    /// Unknown fields discovered during parsing (requires schema-discovery feature)
    #[cfg(feature = "schema-discovery")]
    #[serde(flatten)]
    #[serde(skip_serializing_if = "HashMap::is_empty")]
    #[cfg_attr(feature = "tauri", specta(skip))]
    pub unknown_fields: HashMap<String, serde_yaml_ng::Value>,
}