Files
foxhunt/common/README.md
jgrusewski 6093eac7bf 🔧 Tonic 0.14 Upgrade: Auto-generated and build system changes
Wave 64-65 cleanup: Proto regeneration and build system updates from Tonic 0.12→0.14 upgrade

Files updated:
- Cargo.lock: Dependency resolution for Tonic 0.14.2
- All build.rs: Updated for tonic-prost-build
- Proto files: Regenerated with tonic-prost 0.14
- Examples/tests: Updated for new gRPC API

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-03 07:34:26 +02:00

43 lines
2.0 KiB
Markdown

# 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<Order, FoxhuntError> {
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).