Skip to main content

Decimal

Struct Decimal 

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

An exact decimal number of arbitrary precision.

This is a well-known extension type (see ext) which holds the decimal as validated text in the syntax of JSON numbers (-12.50, 1e-7). The text is kept as is, so trailing zeros (the scale) are retained. The fallback is the text as string.

When deserializing, decimals, strings, integers and floats are accepted. Number extension values (which text formats like JSON emit for floats) are converted exactly.

use deser::ext::Decimal;

let value: Decimal = "-12.50".parse().unwrap();
assert_eq!(value.as_str(), "-12.50");
let (mantissa, exponent) = value.to_parts();
assert_eq!((mantissa.to_string(), exponent), ("-1250".to_string(), -2));
assert_eq!(Decimal::from_parts(&mantissa, exponent), value);

With the rust_decimal and bigdecimal features the decimal types of these crates serialize as Decimal.

Implementations§

Source§

impl Decimal

Source

pub fn new<S: Into<String>>(value: S) -> Result<Decimal, Error>

Creates a decimal from its text representation.

The text has to follow the syntax of JSON numbers.

Source

pub fn from_parts(mantissa: &BigInt, exponent: i64) -> Decimal

Creates a decimal from a mantissa and a base 10 exponent.

The value is mantissa * 10^exponent.

Source

pub fn to_parts(&self) -> (BigInt, i64)

Returns the mantissa and the base 10 exponent.

The value is mantissa * 10^exponent. Exponents that do not fit into i64 saturate.

Source

pub fn as_str(&self) -> &str

Returns the text of the decimal.

Source

pub fn into_string(self) -> String

Converts the decimal into its text.

Trait Implementations§

Source§

impl Clone for Decimal

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for Decimal

Source§

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

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

impl<'de> Deserialize<'de> for Decimal

Source§

fn deserialize_atom( slot: &mut Slot<Self>, atom: Atom<'_>, state: &mut State, ) -> Result<(), Error>

Deserializes an atom into the slot. Read more
Source§

fn expecting() -> Cow<'static, str>

Returns what the value expects, for error messages. Read more
Source§

fn deserialize_into<'out>( out: &'out mut Option<T>, state: &mut State, ) -> SinkHandle<'out, 'de>

Creates a sink that deserializes the value into the given slot. Read more
Source§

fn deserialize_borrowed_atom( slot: &mut Slot<T, Self>, atom: Atom<'de>, state: &mut State, ) -> Result<(), Error>

Deserializes an atom that borrows from the data being deserialized into the slot. Read more
Source§

fn describe_type(d: &mut dyn Describe)

Describes the Rust shape of the type. Read more
Source§

fn initial_value() -> Option<T>

Provides the value of a missing struct field. Read more
Source§

fn deserialize_update<'out>( value: &'out mut T, state: &mut State, ) -> SinkHandle<'out, 'de>

Creates a sink that updates an existing value. Read more
Source§

impl Display for Decimal

Source§

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

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

impl Eq for Decimal

Source§

impl Extension for Decimal

Source§

fn name(&self) -> &str

Returns the human readable name of the extension type. Read more
Source§

fn fallback(&self) -> Atom<'_>

Lowers the value into the core data model. Read more
Source§

impl From<BigInt> for Decimal

Source§

fn from(value: BigInt) -> Decimal

Converts to this type from the input type.
Source§

impl From<i64> for Decimal

Source§

fn from(value: i64) -> Decimal

Converts to this type from the input type.
Source§

impl From<u64> for Decimal

Source§

fn from(value: u64) -> Decimal

Converts to this type from the input type.
Source§

impl FromStr for Decimal

Source§

type Err = Error

The associated error which can be returned from parsing.
Source§

fn from_str(s: &str) -> Result<Decimal, Error>

Parses a string s to return a value of this type. Read more
Source§

impl Hash for Decimal

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 PartialEq for Decimal

Source§

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

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

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

Inequality operator !=. Read more
Source§

impl Serialize for Decimal

Source§

fn serialize<'a>(value: &'a Self, _state: &mut State) -> Result<Emit<'a>, Error>

Serializes the value.
Source§

fn finish(value: &T, state: &mut State) -> Result<(), Error>

Invoked after the serialization finished. Read more
Source§

fn is_optional(value: &T) -> bool

Checks if the value represents an optional value. Read more
Source§

fn describe(value: &T, d: &mut dyn Describe)

Describes the Rust shape of the value. Read more
Source§

fn container_shape(value: &T) -> ContainerShape

Returns the shape of the value if it’s a map or sequence. Read more
Source§

impl StructuralPartialEq for Decimal

Source§

impl TryFrom<f32> for Decimal

Source§

fn try_from(value: f32) -> Result<Decimal, Error>

Converts a float with the shortest representation that roundtrips through f32.

Source§

type Error = Error

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

impl TryFrom<f64> for Decimal

Source§

fn try_from(value: f64) -> Result<Decimal, Error>

Converts a float with the shortest representation that roundtrips.

Source§

type Error = Error

The type returned in the event of a conversion error.

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> BorrowedExtension for T
where T: Extension,

Source§

type Value<'a> = T

The type of the values of this extension.
Source§

fn name(value: &T) -> &str

Returns the human readable name of the extension type. Read more
Source§

fn fallback<'v>(value: &'v T) -> Atom<'v>

Lowers the value into the core data model. Read more
Source§

fn to_static(value: &T) -> T

Detaches a value from the data it borrows. Read more
Source§

fn shorten<'s, 'l>(value: &'s T) -> &'s T
where 'l: 's,

Shortens the lifetime of a 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> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
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> 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 = !

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

fn try_from(value: U) -> Result<T, !>

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.