pub struct Quantity(/* private fields */);Expand description
Quantity of an instrument.
Implementations§
Source§impl Quantity
impl Quantity
Sourcepub fn new(value: Decimal) -> Result<Self, Error>
pub fn new(value: Decimal) -> Result<Self, Error>
Creates a new value from a rust_decimal::Decimal.
§Errors
Returns Error::Negative
when value is below zero.
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.
Returns Error::Negative when value is negative.
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 qty = Quantity::from_str("123.45")?;
assert_eq!(qty.to_string(), "123.45");§Errors
Returns Error::InvalidFormat when string cannot be parsed.
Returns Error::Negative when parsed value is negative.
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.
§Examples
let qty = Quantity::from_str_rounded(
"123.123456789",
8,
RoundingStrategy::DEFAULT
)?;
assert_eq!(qty.to_string(), "123.12345679");
// Conservative profit
let qty = Quantity::from_str_rounded(
"123.125",
2,
RoundingStrategy::CONSERVATIVE_PROFIT
)?;
assert_eq!(qty.to_string(), "123.12");§Errors
Returns Error::InvalidFormat when string cannot be parsed.
Returns Error::Negative when parsed value is negative after rounding.
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.
Returns Error::Negative when value is negative after rounding.
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
Returns Error::Negative when value is negative after rounding.
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_mul_i64(self, scalar: i64) -> Result<Self, Error>
pub fn checked_mul_i64(self, scalar: i64) -> Result<Self, Error>
Safely multiplies by an i64 scalar.
§Errors
Returns Error::Negative when scalar is negative.
Returns Error::Overflow on overflow.
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::Negative when factor is negative.
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::Negative when divisor is negative.
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::Negative when divisor is negative.
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::Negative when divisor is negative.
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::Negative when divisor is negative.
Returns Error::Overflow on overflow.
Source§impl Quantity
impl Quantity
Sourcepub fn calculate_volume(self, price: Price) -> Result<Volume, Error>
pub fn calculate_volume(self, price: Price) -> Result<Volume, Error>
Calculates volume from quantity and price.
Delegates to Price::calculate_volume for the actual computation.
§Errors
Returns Error::Overflow with ParamKind::Price if multiplication overflows.