pub enum Number {
Int64(i64),
UInt64(u64),
Float64(f64),
Decimal64(Decimal64),
Decimal128(Decimal128),
Decimal256(Decimal256),
}Expand description
Represents a JSON number with multiple possible internal representations.
This enum provides a unified type for JSON numbers while supporting various internal representations to optimize for different use cases:
- Integer types (signed/unsigned) for whole numbers
- Floating-point for scientific notation or fractional values
- Decimal types for exact decimal representation with different precision levels
The parser automatically selects the most appropriate representation based on the input value’s characteristics, allowing for both performance and precision.
Variants§
Int64(i64)
64-bit signed integer, suitable for most whole numbers
UInt64(u64)
64-bit unsigned integer, for large positive whole numbers
Float64(f64)
64-bit floating-point, for scientific notation and approximate decimals
Decimal64(Decimal64)
64-bit decimal with exact precision, for financial calculations
Decimal128(Decimal128)
128-bit decimal with extended precision, for larger exact decimals
Decimal256(Decimal256)
256-bit decimal with maximum precision, for extremely large exact decimals
Implementations§
Source§impl Number
impl Number
Sourcepub fn as_i128(&self) -> Option<i128>
pub fn as_i128(&self) -> Option<i128>
Returns the i128 representation of the number, if possible.
This method returns None if the number cannot be represented as an i64.
Sourcepub fn as_i64(&self) -> Option<i64>
pub fn as_i64(&self) -> Option<i64>
Returns the i64 representation of the number, if possible.
This method returns None if the number cannot be represented as an i64.
Sourcepub fn as_u64(&self) -> Option<u64>
pub fn as_u64(&self) -> Option<u64>
Returns the u64 representation of the number, if possible.
This method returns None if the number cannot be represented as a u64.
Sourcepub fn as_f64(&self) -> f64
pub fn as_f64(&self) -> f64
Returns the f64 representation of the number.
This method always returns a value, but may lose precision for very large numbers.
Sourcepub fn neg(&self) -> Result<Number, Error>
pub fn neg(&self) -> Result<Number, Error>
Returns the negation of the number.
This method returns an error if the negation would overflow.
Sourcepub fn add(&self, other: Number) -> Result<Number, Error>
pub fn add(&self, other: Number) -> Result<Number, Error>
Returns the sum of the number and another number.
This method returns an error if the sum would overflow.
Sourcepub fn sub(&self, other: Number) -> Result<Number, Error>
pub fn sub(&self, other: Number) -> Result<Number, Error>
Returns the difference of the number and another number.
This method returns an error if the difference would overflow.
Sourcepub fn mul(&self, other: Number) -> Result<Number, Error>
pub fn mul(&self, other: Number) -> Result<Number, Error>
Returns the product of the number and another number.
This method returns an error if the product would overflow.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Number
impl<'de> Deserialize<'de> for Number
Source§fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
Deserializes a JSON number into the Number enum.
This implementation supports deserialization from JSON integers and floats. It automatically selects the most suitable internal representation based on the input value.
Source§impl Ord for Number
impl Ord for Number
Source§fn cmp(&self, other: &Self) -> Ordering
fn cmp(&self, other: &Self) -> Ordering
Returns the ordering of the number compared to another number.
This method implements precise comparison between different number types:
- When comparing decimal types with other types, it converts the non-decimal type to a decimal representation to preserve precision
- When comparing between decimal types of different precision, it upgrades the lower precision decimal to match the higher precision one
- Only falls back to floating-point comparison as a last resort
1.21.0 · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl PartialEq<&Number> for Number
impl PartialEq<&Number> for Number
Source§impl PartialEq<Number> for &Number
impl PartialEq<Number> for &Number
Source§impl PartialEq for Number
impl PartialEq for Number
Source§impl PartialOrd<&Number> for Number
impl PartialOrd<&Number> for Number
Source§fn partial_cmp(&self, other: &&Number) -> Option<Ordering>
fn partial_cmp(&self, other: &&Number) -> Option<Ordering>
Returns the ordering of the number compared to another number.
This method compares the numbers using their internal representations.
Source§impl PartialOrd<Number> for &Number
impl PartialOrd<Number> for &Number
Source§fn partial_cmp(&self, other: &Number) -> Option<Ordering>
fn partial_cmp(&self, other: &Number) -> Option<Ordering>
Returns the ordering of the number compared to another number.
This method compares the numbers using their internal representations.
Source§impl PartialOrd for Number
impl PartialOrd for Number
Source§fn partial_cmp(&self, other: &Self) -> Option<Ordering>
fn partial_cmp(&self, other: &Self) -> Option<Ordering>
Returns the ordering of the number compared to another number.
This method compares the numbers using their internal representations.
Source§impl Serialize for Number
impl Serialize for Number
Source§fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>where
S: Serializer,
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>where
S: Serializer,
Serializes the Number enum into a JSON number.
This implementation supports serialization to JSON integers and floats. It automatically selects the most suitable output format based on the internal representation.
When the arbitrary_precision feature is enabled, decimal types are serialized with full precision
using the optimized formatting functions. When disabled, decimal types are converted to f64.
impl Eq 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 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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.