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>
43 lines
2.0 KiB
Markdown
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).
|