#[non_exhaustive]pub struct TradeQuote {
pub trade: Trade,
pub mid: f64,
}Expand description
A trade paired with the mid-price prevailing at execution.
This is the input for spread- and price-impact measures (effective spread, realized spread, Kyle’s lambda), which relate an executed trade to the quote it traded against.
§Construction and the limits of its guarantee
The struct is #[non_exhaustive], so code outside this crate cannot build
one from a field literal and must go through new, which
validates, or new_unchecked, which is an explicit
opt-out for values already known to be sound.
The fields stay public because reading them is by far the common operation
and an accessor on each would buy nothing. That does mean a validated value
can still be written into an invalid state afterwards, and nothing detects
it: the indicators that consume this type rely on the constructor’s
guarantee rather than re-checking every bar. Treat a mutation the way you
would treat new_unchecked — you are asserting the invariants still hold.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.trade: TradeThe executed trade.
mid: f64The mid-price prevailing at execution (strictly positive).
Implementations§
Source§impl TradeQuote
impl TradeQuote
Sourcepub fn new(trade: Trade, mid: f64) -> Result<Self>
pub fn new(trade: Trade, mid: f64) -> Result<Self>
Construct a trade-quote, validating that mid is finite and strictly
positive. The trade is assumed already valid.
§Errors
Returns Error::InvalidTrade if mid is not a finite positive
number.
Sourcepub const fn new_unchecked(trade: Trade, mid: f64) -> Self
pub const fn new_unchecked(trade: Trade, mid: f64) -> Self
Construct a trade-quote without validation. The caller asserts that
mid is finite and positive.
Trait Implementations§
Source§impl Clone for TradeQuote
impl Clone for TradeQuote
Source§fn clone(&self) -> TradeQuote
fn clone(&self) -> TradeQuote
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for TradeQuote
Source§impl Debug for TradeQuote
impl Debug for TradeQuote
Source§impl PartialEq for TradeQuote
impl PartialEq for TradeQuote
impl StructuralPartialEq for TradeQuote
Auto Trait Implementations§
impl Freeze for TradeQuote
impl RefUnwindSafe for TradeQuote
impl Send for TradeQuote
impl Sync for TradeQuote
impl Unpin for TradeQuote
impl UnsafeUnpin for TradeQuote
impl UnwindSafe for TradeQuote
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more