Skip to main content

Quantity

Struct Quantity 

Source
pub struct Quantity(/* private fields */);
Expand description

Quantity of an instrument.

Implementations§

Source§

impl Quantity

Source

pub const ZERO: Self

Zero value.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

pub fn to_decimal(&self) -> Decimal

Returns the underlying decimal value.

Source

pub fn is_zero(&self) -> bool

Returns true when the value is exactly zero.

Source

pub fn checked_add(self, other: Self) -> Result<Self, Error>

Safely adds two values.

§Errors

Returns Error::Overflow on overflow.

Source

pub fn checked_sub(self, other: Self) -> Result<Self, Error>

Safely subtracts two values.

§Errors

Returns Error::Underflow when result would be negative.

Source

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.

Source

pub fn checked_mul_u64(self, scalar: u64) -> Result<Self, Error>

Safely multiplies by a u64 scalar.

§Errors

Returns Error::Overflow on overflow.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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

Source

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.

Trait Implementations§

Source§

impl Clone for Quantity

Source§

fn clone(&self) -> Quantity

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Quantity

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for Quantity

Source§

fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Hash for Quantity

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl Ord for Quantity

Source§

fn cmp(&self, other: &Quantity) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

impl PartialEq for Quantity

Source§

fn eq(&self, other: &Quantity) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl PartialOrd for Quantity

Source§

fn partial_cmp(&self, other: &Quantity) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl Copy for Quantity

Source§

impl Eq for Quantity

Source§

impl StructuralPartialEq for Quantity

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToSmolStr for T
where T: Display + ?Sized,

Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.