[][src]Struct json::number::Number

pub struct Number { /* fields omitted */ }

Number representation used inside JsonValue. You can easily convert the Number type into native Rust number types and back, or use the equality operator with another number type.

let foo: Number = 3.14.into();
let bar: f64 = foo.into();

assert_eq!(foo, 3.14);
assert_eq!(bar, 3.14);

More often than not you will deal with JsonValue::Number variant that wraps around this type, instead of using the methods here directly.

Methods

impl Number[src]

pub unsafe fn from_parts_unchecked(
    positive: bool,
    mantissa: u64,
    exponent: i16
) -> Self
[src]

Construct a new Number from parts. This can't create a NaN value.

let pi = unsafe { Number::from_parts_unchecked(true, 3141592653589793, -15) };

assert_eq!(pi, 3.141592653589793);

While this method is marked unsafe, it doesn't actually perform any unsafe operations. THe goal of the 'unsafe' is to deter from using this method in favor of its safe equivalent from_parts, at least in context when the associated performance cost is negligible.

pub fn from_parts(positive: bool, mantissa: u64, exponent: i16) -> Self[src]

Construct a new Number from parts, stripping unnecessary trailing zeroes. This can't create a NaN value.

let one = Number::from_parts(true, 1000, -3);
let (positive, mantissa, exponent) = one.as_parts();

assert_eq!(true, positive);
assert_eq!(1, mantissa);
assert_eq!(0, exponent);

pub fn as_parts(&self) -> (bool, u64, i16)[src]

Reverse to from_parts - obtain parts from an existing Number.

let pi = Number::from(3.141592653589793);
let (positive, mantissa, exponent) = pi.as_parts();

assert_eq!(positive, true);
assert_eq!(mantissa, 3141592653589793);
assert_eq!(exponent, -15);

pub fn is_sign_positive(&self) -> bool[src]

pub fn is_zero(&self) -> bool[src]

pub fn is_nan(&self) -> bool[src]

pub fn is_empty(&self) -> bool[src]

Test if the number is NaN or has a zero value.

pub fn as_fixed_point_u64(&self, point: u16) -> Option<u64>[src]

Obtain an integer at a fixed decimal point. This is useful for converting monetary values and doing arithmetic on them without rounding errors introduced by floating point operations.

Will return None if Number is negative or a NaN.

let price_a = Number::from(5.99);
let price_b = Number::from(7);
let price_c = Number::from(10.2);

assert_eq!(price_a.as_fixed_point_u64(2), Some(599));
assert_eq!(price_b.as_fixed_point_u64(2), Some(700));
assert_eq!(price_c.as_fixed_point_u64(2), Some(1020));

pub fn as_fixed_point_i64(&self, point: u16) -> Option<i64>[src]

Analog to as_fixed_point_u64, except returning a signed i64, properly handling negative numbers.

let balance_a = Number::from(-1.49);
let balance_b = Number::from(42);

assert_eq!(balance_a.as_fixed_point_i64(2), Some(-149));
assert_eq!(balance_b.as_fixed_point_i64(2), Some(4200));

Trait Implementations

impl Clone for Number[src]

impl Copy for Number[src]

impl Debug for Number[src]

impl Display for Number[src]

impl From<Number> for JsonValue[src]

impl From<Number> for f64[src]

impl From<Number> for f32[src]

impl From<f32> for Number[src]

impl From<f64> for Number[src]

impl From<i16> for Number[src]

impl From<i32> for Number[src]

impl From<i64> for Number[src]

impl From<i8> for Number[src]

impl From<isize> for Number[src]

impl From<u16> for Number[src]

impl From<u32> for Number[src]

impl From<u64> for Number[src]

impl From<u8> for Number[src]

impl From<usize> for Number[src]

impl Neg for Number[src]

type Output = Number

The resulting type after applying the - operator.

impl PartialEq<JsonValue> for Number[src]

impl PartialEq<Number> for JsonValue[src]

impl<'a> PartialEq<Number> for &'a JsonValue[src]

impl PartialEq<Number> for usize[src]

impl PartialEq<Number> for u8[src]

impl PartialEq<Number> for u16[src]

impl PartialEq<Number> for u32[src]

impl PartialEq<Number> for u64[src]

impl PartialEq<Number> for Number[src]

impl PartialEq<Number> for f64[src]

impl PartialEq<Number> for f32[src]

impl PartialEq<Number> for isize[src]

impl PartialEq<Number> for i8[src]

impl PartialEq<Number> for i16[src]

impl PartialEq<Number> for i32[src]

impl PartialEq<Number> for i64[src]

impl PartialEq<f32> for Number[src]

impl PartialEq<f64> for Number[src]

impl PartialEq<i16> for Number[src]

impl PartialEq<i32> for Number[src]

impl PartialEq<i64> for Number[src]

impl PartialEq<i8> for Number[src]

impl PartialEq<isize> for Number[src]

impl PartialEq<u16> for Number[src]

impl PartialEq<u32> for Number[src]

impl PartialEq<u64> for Number[src]

impl PartialEq<u8> for Number[src]

impl PartialEq<usize> for Number[src]

impl TryFrom<Number> for isize[src]

type Error = NumberOutOfScope

The type returned in the event of a conversion error.

impl TryFrom<Number> for i8[src]

type Error = NumberOutOfScope

The type returned in the event of a conversion error.

impl TryFrom<Number> for i16[src]

type Error = NumberOutOfScope

The type returned in the event of a conversion error.

impl TryFrom<Number> for i32[src]

type Error = NumberOutOfScope

The type returned in the event of a conversion error.

impl TryFrom<Number> for i64[src]

type Error = NumberOutOfScope

The type returned in the event of a conversion error.

impl TryFrom<Number> for usize[src]

type Error = NumberOutOfScope

The type returned in the event of a conversion error.

impl TryFrom<Number> for u8[src]

type Error = NumberOutOfScope

The type returned in the event of a conversion error.

impl TryFrom<Number> for u16[src]

type Error = NumberOutOfScope

The type returned in the event of a conversion error.

impl TryFrom<Number> for u32[src]

type Error = NumberOutOfScope

The type returned in the event of a conversion error.

impl TryFrom<Number> for u64[src]

type Error = NumberOutOfScope

The type returned in the event of a conversion error.

Auto Trait Implementations

impl RefUnwindSafe for Number

impl Send for Number

impl Sync for Number

impl Unpin for Number

impl UnwindSafe for Number

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T> ToString for T where
    T: Display + ?Sized
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.