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
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.
impl Eq for Number
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 (const: unstable) · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
1.21.0 (const: unstable) · Source§fn min(self, other: Self) -> Selfwhere
Self: Sized,
fn min(self, other: Self) -> Selfwhere
Self: Sized,
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 PartialOrd<&Number> for Number
impl PartialOrd<&Number> 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 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.