pub struct Price(/* private fields */);Expand description
Price per one instrument unit.
Can be negative in certain derivative markets (e.g., options, futures with storage costs, calendar spreads).
Implementations§
Source§impl Price
impl Price
Sourcepub fn new(value: Decimal) -> Self
pub fn new(value: Decimal) -> Self
Creates a new value from a rust_decimal::Decimal.
Sourcepub fn from_f64(value: f64) -> Result<Self, Error>
pub fn from_f64(value: f64) -> Result<Self, Error>
Creates a value from a 64-bit floating-point number.
§Errors
Returns Error::InvalidFloat when value is NaN or infinite.
Sourcepub fn from_str(s: &str) -> Result<Self, Error>
pub fn from_str(s: &str) -> Result<Self, Error>
Creates a value from a string representation.
§Examples
let price = Price::from_str("42350.75")?;
assert_eq!(price.to_string(), "42350.75");
let negative_price = Price::from_str("-10.5")?;
assert_eq!(negative_price.to_string(), "-10.5");§Errors
Returns Error::InvalidFormat when string cannot be parsed.
Sourcepub fn from_str_rounded(
s: &str,
scale: u32,
rounding: RoundingStrategy,
) -> Result<Self, Error>
pub fn from_str_rounded( s: &str, scale: u32, rounding: RoundingStrategy, ) -> Result<Self, Error>
Creates a value from a string representation with rounding.
The value is rounded to the specified scale using the provided rounding strategy.
§Errors
Returns Error::InvalidFormat when string cannot be parsed.
Sourcepub fn from_f64_rounded(
value: f64,
scale: u32,
rounding: RoundingStrategy,
) -> Result<Self, Error>
pub fn from_f64_rounded( value: f64, scale: u32, rounding: RoundingStrategy, ) -> Result<Self, Error>
Creates a value from a 64-bit floating-point number with rounding.
The value is rounded to the specified scale using the provided rounding strategy.
§Errors
Returns Error::InvalidFloat when value is NaN or infinite.
Sourcepub fn from_decimal_rounded(
decimal: Decimal,
scale: u32,
rounding: RoundingStrategy,
) -> Result<Self, Error>
pub fn from_decimal_rounded( decimal: Decimal, scale: u32, rounding: RoundingStrategy, ) -> Result<Self, Error>
Creates a value from a rust_decimal::Decimal with rounding.
The value is rounded to the specified scale using the provided rounding strategy.
§Errors
This method is infallible for signed types as rounding cannot produce errors.
Sourcepub fn to_decimal(&self) -> Decimal
pub fn to_decimal(&self) -> Decimal
Returns the underlying decimal value.
Sourcepub fn checked_add(self, other: Self) -> Result<Self, Error>
pub fn checked_add(self, other: Self) -> Result<Self, Error>
Sourcepub fn checked_sub(self, other: Self) -> Result<Self, Error>
pub fn checked_sub(self, other: Self) -> Result<Self, Error>
Sourcepub fn checked_neg(self) -> Result<Self, Error>
pub fn checked_neg(self) -> Result<Self, Error>
Sourcepub fn checked_mul_i64(self, scalar: i64) -> Result<Self, Error>
pub fn checked_mul_i64(self, scalar: i64) -> Result<Self, Error>
Sourcepub fn checked_mul_u64(self, scalar: u64) -> Result<Self, Error>
pub fn checked_mul_u64(self, scalar: u64) -> Result<Self, Error>
Sourcepub fn checked_mul_f64(self, factor: f64) -> Result<Self, Error>
pub fn checked_mul_f64(self, factor: f64) -> Result<Self, Error>
Safely multiplies by an f64 factor.
§Errors
Returns Error::InvalidFloat when factor is NaN or infinite.
Returns Error::Overflow on overflow.
Sourcepub fn checked_div_i64(self, divisor: i64) -> Result<Self, Error>
pub fn checked_div_i64(self, divisor: i64) -> Result<Self, Error>
Safely divides by an i64 divisor.
§Errors
Returns Error::DivisionByZero when divisor is zero.
Returns Error::Overflow on overflow.
Sourcepub fn checked_div_u64(self, divisor: u64) -> Result<Self, Error>
pub fn checked_div_u64(self, divisor: u64) -> Result<Self, Error>
Safely divides by a u64 divisor.
§Errors
Returns Error::DivisionByZero when divisor is zero.
Returns Error::Overflow on overflow.
Sourcepub fn checked_div_f64(self, divisor: f64) -> Result<Self, Error>
pub fn checked_div_f64(self, divisor: f64) -> Result<Self, Error>
Safely divides by an f64 divisor.
§Errors
Returns Error::InvalidFloat when divisor is NaN or infinite.
Returns Error::DivisionByZero when divisor is zero.
Returns Error::Overflow on overflow.
Sourcepub fn checked_rem_i64(self, divisor: i64) -> Result<Self, Error>
pub fn checked_rem_i64(self, divisor: i64) -> Result<Self, Error>
Safely computes remainder by i64 divisor.
§Errors
Returns Error::DivisionByZero when divisor is zero.
Returns Error::Overflow on overflow.
Sourcepub fn checked_rem_u64(self, divisor: u64) -> Result<Self, Error>
pub fn checked_rem_u64(self, divisor: u64) -> Result<Self, Error>
Safely computes remainder by u64 divisor.
§Errors
Returns Error::DivisionByZero when divisor is zero.
Returns Error::Overflow on overflow.
Sourcepub fn checked_rem_f64(self, divisor: f64) -> Result<Self, Error>
pub fn checked_rem_f64(self, divisor: f64) -> Result<Self, Error>
Safely computes remainder by f64 divisor.
§Errors
Returns Error::InvalidFloat when divisor is NaN or infinite.
Returns Error::DivisionByZero when divisor is zero.
Returns Error::Overflow on overflow.
Source§impl Price
impl Price
Sourcepub fn calculate_volume(self, quantity: Quantity) -> Result<Volume, Error>
pub fn calculate_volume(self, quantity: Quantity) -> Result<Volume, Error>
Calculates volume from price and quantity.
Uses absolute values of both price and quantity to ensure volume is non-negative.
§Errors
Returns Error::Overflow with ParamKind::Price if multiplication overflows.