# Common Crate ## Overview The `common` crate provides a foundational set of shared types and utilities essential for building high-frequency trading applications within the Foxhunt ecosystem. It encapsulates core data structures, error handling patterns, and common helpers used across various components. ## Features * **Market Data & Order Types:** Defines standardized structs for market data (e.g., `Tick`, `OrderBook`) and various order types (e.g., `LimitOrder`, `MarketOrder`). * **High-Precision Time Utilities:** Offers utilities for working with nanosecond-resolution timestamps and duration calculations critical for HFT. * **Robust Error Handling:** Implements a custom `FoxhuntError` enum and `Result` type for consistent and traceable error management across the system. * **Data Validation Helpers:** Provides functions for validating common HFT parameters such as prices, quantities, and instrument IDs. * **Serialization/Deserialization:** Includes helpers and derive macros for efficient data serialization (e.g., using `serde`) for inter-process communication or persistence. * **Instrument & Asset Definitions:** Standardized types for defining trading instruments, assets, and exchanges. ## Usage ```rust use common::types::{Order, OrderSide, Price, Quantity, InstrumentId}; use common::errors::FoxhuntError; fn create_limit_order(instrument: InstrumentId, price: Price, quantity: Quantity) -> Result { if price.value() <= 0.0 || quantity.value() <= 0.0 { return Err(FoxhuntError::ValidationError("Price and quantity must be positive".to_string())); } Ok(Order::new_limit(instrument, OrderSide::Buy, price, quantity)) } let instrument = InstrumentId::new("BTCUSD".to_string()); let order = create_limit_order(instrument, Price::new(60000.0), Quantity::new(0.5)); println!("{:?}", order); ``` ## Testing ```bash cargo test --package common ``` ## Documentation Comprehensive API documentation is available at [docs.rs/common](https://docs.rs/common).