pub struct MarketUpdate<const N: usize = 32, const T: usize = 16> {
pub timestamp_ns: u64,
pub symbol: String,
pub bid_prices: SmallVec<[Decimal; N]>,
pub bid_quantities: SmallVec<[Decimal; N]>,
pub ask_prices: SmallVec<[Decimal; N]>,
pub ask_quantities: SmallVec<[Decimal; N]>,
pub trades: SmallVec<[TradeUpdate; T]>,
}Expand description
Market data for incremental calculation
This struct represents a single market update containing order book data and trades. It uses const generics to allow compile-time optimization of buffer sizes.
§Type Parameters
-
N- The capacity for bid/ask price and quantity vectors (default: 32)- Controls the maximum number of order book levels that can be stored
- Uses
SmallVecto avoid heap allocation for typical order book depths - Common values: 5-10 for top-of-book strategies, 20-50 for market making, 100+ for full depth analysis
-
T- The capacity for the trades buffer (default: 16)- Controls the maximum number of trades that can be stored per update
- Uses
SmallVecto avoid heap allocation for typical trade bursts - Common values: 8-16 for normal markets, 32-64 for high-volume periods, 128+ for extremely liquid assets
§Performance Considerations
- Values up to the specified capacity are stored inline (stack allocated)
- Exceeding capacity will cause heap allocation, impacting performance
- Choose capacities based on your specific use case and market characteristics
- Monitor actual usage to optimize these parameters
§Examples
// Default configuration suitable for most use cases
let update: MarketUpdate = MarketUpdate {
timestamp_ns: 1_000_000_000,
symbol: "BTC-USD".to_string(),
bid_prices: smallvec![/* ... */],
// ... other fields
};
// High-frequency market maker needing more order book levels
let update: MarketUpdate<64, 32> = MarketUpdate {
// Can store up to 64 order book levels and 32 trades inline
// ... fields
};
// Lightweight strategy only caring about top of book
let update: MarketUpdate<5, 8> = MarketUpdate {
// Only stores top 5 levels and up to 8 trades inline
// ... fields
};Fields§
§timestamp_ns: u64Nanosecond timestamp of the update.
symbol: StringThe trading symbol.
bid_prices: SmallVec<[Decimal; N]>A small vector of bid prices.
bid_quantities: SmallVec<[Decimal; N]>A small vector of bid quantities.
ask_prices: SmallVec<[Decimal; N]>A small vector of ask prices.
ask_quantities: SmallVec<[Decimal; N]>A small vector of ask quantities.
trades: SmallVec<[TradeUpdate; T]>A small vector of trades.
Trait Implementations§
Source§impl<const N: usize, const T: usize> Clone for MarketUpdate<N, T>
impl<const N: usize, const T: usize> Clone for MarketUpdate<N, T>
Source§fn clone(&self) -> MarketUpdate<N, T>
fn clone(&self) -> MarketUpdate<N, T>
Returns a duplicate of the value. Read more
1.0.0 · Source§const fn clone_from(&mut self, source: &Self)
const fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl<const N: usize, const T: usize> Freeze for MarketUpdate<N, T>
impl<const N: usize, const T: usize> RefUnwindSafe for MarketUpdate<N, T>
impl<const N: usize, const T: usize> Send for MarketUpdate<N, T>
impl<const N: usize, const T: usize> Sync for MarketUpdate<N, T>
impl<const N: usize, const T: usize> Unpin for MarketUpdate<N, T>
impl<const N: usize, const T: usize> UnwindSafe for MarketUpdate<N, T>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more