pub enum Number {
Integer(BigInt),
Rational(BigRational),
Decimal(Decimal),
Float64(Float64),
}Expand description
The recursive scalar number type.
Variants§
Implementations§
Source§impl Number
impl Number
pub fn integer<T: Into<BigInt>>(value: T) -> Number
pub fn decimal(value: Decimal) -> Number
pub fn rational(numer: BigInt, denom: BigInt) -> Result<Number, EngineError>
pub fn float(value: f64) -> Result<Number, EngineError>
pub fn is_zero(&self) -> bool
pub fn is_negative(&self) -> bool
pub fn is_float(&self) -> bool
pub fn kind_name(&self) -> &'static str
Sourcepub fn as_exact_rational(&self) -> Option<BigRational>
pub fn as_exact_rational(&self) -> Option<BigRational>
Convert to an exact rational, failing for Float64 (use
Number::to_exact_rational to include floats via their exact bits).
Sourcepub fn to_exact_rational(&self) -> Option<BigRational>
pub fn to_exact_rational(&self) -> Option<BigRational>
Convert to an exact rational, including Float64 via bit decomposition.
pub fn to_f64(&self) -> Option<f64>
pub fn neg(&self) -> Number
pub fn abs(&self) -> Number
Sourcepub fn compare(&self, other: &Number) -> Result<Ordering, EngineError>
pub fn compare(&self, other: &Number) -> Result<Ordering, EngineError>
Exact comparison across all representations.
Sourcepub fn numeric_eq(&self, other: &Number) -> Result<bool, EngineError>
pub fn numeric_eq(&self, other: &Number) -> Result<bool, EngineError>
Numeric equality across representations (exact semantics).
pub fn add( &self, other: &Number, ctx: &NumericContext, limits: &Limits, ) -> Result<NumberResult, EngineError>
pub fn sub( &self, other: &Number, ctx: &NumericContext, limits: &Limits, ) -> Result<NumberResult, EngineError>
pub fn mul( &self, other: &Number, ctx: &NumericContext, limits: &Limits, ) -> Result<NumberResult, EngineError>
pub fn div( &self, other: &Number, ctx: &NumericContext, limits: &Limits, ) -> Result<NumberResult, EngineError>
Sourcepub fn pow(
&self,
exponent: &Number,
ctx: &NumericContext,
limits: &Limits,
) -> Result<NumberResult, EngineError>
pub fn pow( &self, exponent: &Number, ctx: &NumericContext, limits: &Limits, ) -> Result<NumberResult, EngineError>
Integer power. A non-integer exponent requires scientific mode.
Sourcepub fn rem(
&self,
other: &Number,
ctx: &NumericContext,
limits: &Limits,
) -> Result<NumberResult, EngineError>
pub fn rem( &self, other: &Number, ctx: &NumericContext, limits: &Limits, ) -> Result<NumberResult, EngineError>
Truncated remainder: sign follows the dividend (like Rust’s %).
Sourcepub fn modulo(
&self,
other: &Number,
ctx: &NumericContext,
limits: &Limits,
) -> Result<NumberResult, EngineError>
pub fn modulo( &self, other: &Number, ctx: &NumericContext, limits: &Limits, ) -> Result<NumberResult, EngineError>
Euclidean modulo: result is non-negative for a positive modulus.
pub fn round_to_scale( &self, scale: i64, mode: RoundingMode, ) -> Result<Number, EngineError>
Source§impl Number
impl Number
Sourcepub fn parse_literal(
source: &str,
limits: &Limits,
) -> Result<Number, EngineError>
pub fn parse_literal( source: &str, limits: &Limits, ) -> Result<Number, EngineError>
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Number
impl<'de> Deserialize<'de> for Number
Source§fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error>
fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error>
Deserialize this value from the given Serde deserializer. Read more
impl Eq for Number
impl StructuralPartialEq for Number
Auto Trait Implementations§
impl Freeze for Number
impl RefUnwindSafe for Number
impl Send for Number
impl Sync for Number
impl Unpin for Number
impl UnsafeUnpin for Number
impl UnwindSafe for Number
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