Skip to main content

ManagedDecimalSigned

Struct ManagedDecimalSigned 

Source
pub struct ManagedDecimalSigned<M: ManagedTypeApi, D: Decimals> { /* private fields */ }
Expand description

Fixed-point decimal numbers that accept either a constant or variable number of decimals.

Unlike for ManagedDecimal, ngative numbers are also allowed.

Implementations§

Source§

impl<M: ManagedTypeApi, D1: Decimals> ManagedDecimalSigned<M, D1>

Source

pub fn mul_half_up_signed<D2: Decimals, DResult: Decimals>( &self, other: &ManagedDecimalSigned<M, D2>, precision: DResult, ) -> ManagedDecimalSigned<M, DResult>

Multiplies two signed decimals with half-up (away-from-zero) rounding to a target precision.

The algorithm mirrors ManagedDecimal::mul_half_up, but uses BigInt arithmetic and adjusts the pre-bias direction based on the sign of the intermediate product:

if product < 0:  rounded = (product - scale / 2) / scale
else:            rounded = (product + scale / 2) / scale

The VM’s integer division truncates toward zero. Subtracting the bias for a negative product pushes it further from zero before truncation, so the final result rounds away from zero in both directions — matching the conventional financial definition of “round half up” for signed numbers.

§Credits

Original implementation by @mihaieremia.

Source

pub fn div_half_up_signed<D2: Decimals, DResult: Decimals>( &self, other: &ManagedDecimalSigned<M, D2>, precision: DResult, ) -> ManagedDecimalSigned<M, DResult>

Divides two signed decimals with half-up (away-from-zero) rounding to a target precision.

The numerator is scaled up by scale (as in ManagedDecimal::div_half_up) and then pre-biased before T-division (truncates toward zero). The bias direction depends solely on the sign of the numerator — not on the sign of the denominator:

half = |denominator| / 2
if numerator < 0:  rounded = (numerator - half) / denominator
else:              rounded = (numerator + half) / denominator

This is correct because half is always non-negative. When numerator > 0, adding half increases the numerator’s magnitude; when the denominator is negative, dividing a larger positive numerator yields a more-negative result — farther from zero. The rule therefore rounds away from zero for all four sign combinations of (numerator, denominator).

Using sign(denominator) as the branch condition instead would produce wrong results whenever the denominator is negative.

§Credits

Original implementation by @mihaieremia.

Source§

impl<M: ManagedTypeApi, D: Decimals> ManagedDecimalSigned<M, D>

Source

pub fn ln(&self) -> Option<ManagedDecimalSigned<M, LnDecimals>>

Natural logarithm of a number.

Returns None for 0.

Even though 9 decimals are returned, only around 6 decimals are actually useful.

Source

pub fn log2(&self) -> Option<ManagedDecimalSigned<M, LnDecimals>>

Base 2 logarithm of a number.

Returns None for 0.

Even though 9 decimals are returned, only around 6 decimals are actually useful.

Source§

impl<M: ManagedTypeApi, D1: Decimals> ManagedDecimalSigned<M, D1>

Source

pub fn mul_with_precision<D2: Decimals, T: Decimals>( self, other: ManagedDecimalSigned<M, D2>, precision: T, ) -> ManagedDecimalSigned<M, T>

Source§

impl<M: ManagedTypeApi, D: Decimals> ManagedDecimalSigned<M, D>

Source

pub fn trunc(&self) -> BigInt<M>

Returns the integer part (truncated toward zero) of the signed decimal value.

Divides the raw fixed-point integer by the scaling factor, discarding the fractional part. For example, -1.75 with 2 decimals returns -1.

Source

pub fn as_raw_units(&self) -> &BigInt<M>

Returns a reference to the underlying raw fixed-point integer.

The value is stored as real_value * 10^decimals. For example, a ManagedDecimalSigned representing -1.5 with 2 decimals has a raw value of -150.

Source

pub fn into_raw_units(&self) -> &BigInt<M>

👎Deprecated since 0.66.0:

Use as_raw_units to get a reference to the raw value, or into_raw_parts to consume the decimal and get the raw value.

Was incorrectly named into_raw_units in versions prior to 0.66.0; renamed to as_raw_units to clarify that it returns a reference and does not consume the decimal.

Source

pub fn into_raw_parts(self) -> (BigInt<M>, D)

Consumes the decimal and returns the underlying raw fixed-point integer together with the decimals specification.

The value is stored as real_value * 10^decimals. For example, a ManagedDecimalSigned representing -1.5 with 2 decimals has a raw value of -150.

This is the destructuring counterpart of from_raw_units.

Source

pub fn from_raw_units(data: BigInt<M>, decimals: D) -> Self

Creates a ManagedDecimalSigned from a raw fixed-point integer and a decimals specification.

The caller is responsible for ensuring data is already scaled by 10^decimals.

Source

pub fn scale(&self) -> usize

Returns the number of decimal places.

Source

pub fn scaling_factor(&self) -> ManagedRef<'static, M, BigUint<M>>

Returns the scaling factor 10^decimals as a static reference.

Source

pub fn rescale<T: Decimals>(&self, scale_to: T) -> ManagedDecimalSigned<M, T>

Converts this decimal to a new scale, adjusting the raw value accordingly.

Upscaling adds precision (appends trailing zeros to the raw integer); downscaling truncates the least-significant digits.

Source

pub fn into_unsigned_or_fail(self) -> ManagedDecimal<M, D>

Converts this signed decimal into an unsigned ManagedDecimal, panicking if the value is negative.

Source

pub fn sign(&self) -> Sign

Returns the sign of the decimal value (Positive, Negative, or NoSign for zero).

Source§

impl<M: ManagedTypeApi, DECIMALS: Unsigned> ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>

Source

pub fn const_decimals_from_raw(data: BigInt<M>) -> Self

Creates a ManagedDecimalSigned with a compile-time fixed number of decimals from a raw integer.

The caller is responsible for ensuring data is already scaled by 10^DECIMALS.

Source

pub fn into_var_decimals(self) -> ManagedDecimalSigned<M, NumDecimals>

Converts from constant (compile-time) number of decimals to a variable number of decimals.

Source§

impl<M: ManagedTypeApi, D: Decimals> ManagedDecimalSigned<M, D>

Source

pub fn to_big_float(&self) -> BigFloat<M>

Converts this fixed-point decimal to a BigFloat for floating-point arithmetic.

Divides the raw integer by the scaling factor to produce the real-valued float.

Source

pub fn from_big_float<T: Decimals>( big_float: &BigFloat<M>, num_decimals: T, ) -> ManagedDecimalSigned<M, T>

Constructs a ManagedDecimalSigned from a BigFloat at the given decimal precision.

Multiplies the float by the scaling factor and truncates to an integer. This is an approximation; precision is limited by the float representation.

Trait Implementations§

Source§

impl<DECIMALS: Unsigned, M: ManagedTypeApi> Add<ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>> for ManagedDecimalSigned<M, NumDecimals>

Source§

type Output = ManagedDecimalSigned<M, usize>

The resulting type after applying the + operator.
Source§

fn add( self, rhs: ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>, ) -> Self::Output

Performs the + operation. Read more
Source§

impl<DECIMALS: Unsigned, M: ManagedTypeApi> Add<ManagedDecimalSigned<M, usize>> for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>

Source§

type Output = ManagedDecimalSigned<M, usize>

The resulting type after applying the + operator.
Source§

fn add(self, rhs: ManagedDecimalSigned<M, NumDecimals>) -> Self::Output

Performs the + operation. Read more
Source§

impl<M: ManagedTypeApi, DECIMALS: Unsigned> Add for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>

Source§

type Output = ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>

The resulting type after applying the + operator.
Source§

fn add( self, rhs: ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>, ) -> Self::Output

Performs the + operation. Read more
Source§

impl<M: ManagedTypeApi> Add for ManagedDecimalSigned<M, NumDecimals>

Source§

type Output = ManagedDecimalSigned<M, usize>

The resulting type after applying the + operator.
Source§

fn add(self, rhs: ManagedDecimalSigned<M, NumDecimals>) -> Self::Output

Performs the + operation. Read more
Source§

impl<M: ManagedTypeApi, D1: Decimals, D2: Decimals> AddAssign<&ManagedDecimalSigned<M, D2>> for ManagedDecimalSigned<M, D1>

Source§

fn add_assign(&mut self, rhs: &ManagedDecimalSigned<M, D2>)

Performs the += operation. Read more
Source§

impl<M: ManagedTypeApi, D1: Decimals, D2: Decimals> AddAssign<ManagedDecimalSigned<M, D2>> for ManagedDecimalSigned<M, D1>

Source§

fn add_assign(&mut self, rhs: ManagedDecimalSigned<M, D2>)

Performs the += operation. Read more
Source§

impl<M: Clone + ManagedTypeApi, D: Clone + Decimals> Clone for ManagedDecimalSigned<M, D>

Source§

fn clone(&self) -> ManagedDecimalSigned<M, D>

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<M: ManagedTypeApi, D: Decimals> Debug for ManagedDecimalSigned<M, D>

Source§

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

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

impl<M: ManagedTypeApi, D: Decimals> Display for ManagedDecimalSigned<M, D>

Source§

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

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

impl<DECIMALS: Unsigned, M: ManagedTypeApi> Div<ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>> for ManagedDecimalSigned<M, NumDecimals>

Source§

type Output = ManagedDecimalSigned<M, usize>

The resulting type after applying the / operator.
Source§

fn div( self, rhs: ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>, ) -> Self::Output

Performs the / operation. Read more
Source§

impl<M: ManagedTypeApi, D1, D2: Decimals> Div<ManagedDecimalSigned<M, D2>> for ManagedDecimalSigned<M, D1>
where D1: Sub<D2> + Decimals, <D1 as Sub<D2>>::Output: Decimals,

Source§

type Output = ManagedDecimalSigned<M, <D1 as Sub<D2>>::Output>

The resulting type after applying the / operator.
Source§

fn div(self, other: ManagedDecimalSigned<M, D2>) -> Self::Output

Performs the / operation. Read more
Source§

impl<DECIMALS: Unsigned, M: ManagedTypeApi> Div<ManagedDecimalSigned<M, usize>> for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>

Source§

type Output = ManagedDecimalSigned<M, usize>

The resulting type after applying the / operator.
Source§

fn div(self, rhs: ManagedDecimalSigned<M, NumDecimals>) -> Self::Output

Performs the / operation. Read more
Source§

impl<M: ManagedTypeApi, D: Decimals> Div<usize> for ManagedDecimalSigned<M, D>

Source§

type Output = ManagedDecimalSigned<M, D>

The resulting type after applying the / operator.
Source§

fn div(self, other: NumDecimals) -> Self::Output

Performs the / operation. Read more
Source§

impl<M: ManagedTypeApi, D1: Decimals, D2: Decimals> DivAssign<&ManagedDecimalSigned<M, D2>> for ManagedDecimalSigned<M, D1>

Source§

fn div_assign(&mut self, rhs: &ManagedDecimalSigned<M, D2>)

Performs the /= operation. Read more
Source§

impl<M: ManagedTypeApi, D1: Decimals, D2: Decimals> DivAssign<ManagedDecimalSigned<M, D2>> for ManagedDecimalSigned<M, D1>

Source§

fn div_assign(&mut self, rhs: ManagedDecimalSigned<M, D2>)

Performs the /= operation. Read more
Source§

impl<M: ManagedTypeApi, DECIMALS: Unsigned> From<&BigFloat<M>> for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>

Source§

fn from(value: &BigFloat<M>) -> Self

Converts to this type from the input type.
Source§

impl<M: ManagedTypeApi, DECIMALS: Unsigned> From<BigFloat<M>> for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>

Source§

fn from(value: BigFloat<M>) -> Self

Converts to this type from the input type.
Source§

impl<M: ManagedTypeApi, DECIMALS: Unsigned> From<BigInt<M>> for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>

Source§

fn from(value: BigInt<M>) -> Self

Converts to this type from the input type.
Source§

impl<M: ManagedTypeApi, DECIMALS: Unsigned> From<f32> for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>

Source§

fn from(x: f32) -> Self

Converts to this type from the input type.
Source§

impl<M: ManagedTypeApi, DECIMALS: Unsigned> From<f64> for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>

Source§

fn from(x: f64) -> Self

Converts to this type from the input type.
Source§

impl<M: ManagedTypeApi, DECIMALS: Unsigned> From<i64> for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>

Source§

fn from(value: i64) -> Self

Converts to this type from the input type.
Source§

impl<M: ManagedTypeApi, DECIMALS: Unsigned> ManagedVecItem for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>

Source§

const SKIPS_RESERIALIZATION: bool = false

If true, then the encoding of the item is identical to the payload, and no further conversion is necessary (the underlying buffer can be used as-is during serialization). False for all managed types, but true for basic types (like u32).
Source§

type PAYLOAD = ManagedVecItemPayloadBuffer<UInt<UInt<UInt<UTerm, B1>, B0>, B0>>

Type managing the underlying binary representation in a ManagedVec..
Source§

type Ref<'a> = Ref<'a, ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>>

Reference representation of the ManagedVec item. Read more
Source§

unsafe fn read_from_payload(payload: &Self::PAYLOAD) -> Self

Parses given bytes as a an owned object. Read more
Source§

unsafe fn borrow_from_payload<'a>(payload: &Self::PAYLOAD) -> Self::Ref<'a>

Parses given bytes as a representation of the object, either owned, or a reference. Read more
Source§

fn save_to_payload(self, payload: &mut Self::PAYLOAD)

Converts the object into bytes. Read more
Source§

fn requires_drop() -> bool

Signals that vec should drop all items one by one when being itself dropped. Read more
Source§

fn payload_size() -> usize

Source§

fn temp_decode<F, R>(payload: &Self::PAYLOAD, f: F) -> R
where F: FnOnce(&Self) -> R,

Source§

impl<M: ManagedTypeApi> ManagedVecItem for ManagedDecimalSigned<M, NumDecimals>

Source§

const SKIPS_RESERIALIZATION: bool = false

If true, then the encoding of the item is identical to the payload, and no further conversion is necessary (the underlying buffer can be used as-is during serialization). False for all managed types, but true for basic types (like u32).
Source§

type PAYLOAD = ManagedVecItemPayloadBuffer<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>>

Type managing the underlying binary representation in a ManagedVec..
Source§

type Ref<'a> = Ref<'a, ManagedDecimalSigned<M, usize>>

Reference representation of the ManagedVec item. Read more
Source§

unsafe fn read_from_payload(payload: &Self::PAYLOAD) -> Self

Parses given bytes as a an owned object. Read more
Source§

unsafe fn borrow_from_payload<'a>(payload: &Self::PAYLOAD) -> Self::Ref<'a>

Parses given bytes as a representation of the object, either owned, or a reference. Read more
Source§

fn save_to_payload(self, payload: &mut Self::PAYLOAD)

Converts the object into bytes. Read more
Source§

fn requires_drop() -> bool

Signals that vec should drop all items one by one when being itself dropped. Read more
Source§

fn payload_size() -> usize

Source§

fn temp_decode<F, R>(payload: &Self::PAYLOAD, f: F) -> R
where F: FnOnce(&Self) -> R,

Source§

impl<DECIMALS: Unsigned, M: ManagedTypeApi> Mul<ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>> for ManagedDecimalSigned<M, NumDecimals>

Source§

type Output = ManagedDecimalSigned<M, usize>

The resulting type after applying the * operator.
Source§

fn mul( self, rhs: ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>, ) -> Self::Output

Performs the * operation. Read more
Source§

impl<M: ManagedTypeApi, D1, D2: Decimals> Mul<ManagedDecimalSigned<M, D2>> for ManagedDecimalSigned<M, D1>
where D1: Add<D2> + Decimals, <D1 as Add<D2>>::Output: Decimals,

Source§

type Output = ManagedDecimalSigned<M, <D1 as Add<D2>>::Output>

The resulting type after applying the * operator.
Source§

fn mul(self, other: ManagedDecimalSigned<M, D2>) -> Self::Output

Performs the * operation. Read more
Source§

impl<DECIMALS: Unsigned, M: ManagedTypeApi> Mul<ManagedDecimalSigned<M, usize>> for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>

Source§

type Output = ManagedDecimalSigned<M, usize>

The resulting type after applying the * operator.
Source§

fn mul(self, rhs: ManagedDecimalSigned<M, NumDecimals>) -> Self::Output

Performs the * operation. Read more
Source§

impl<M: ManagedTypeApi, D1: Decimals, D2: Decimals> MulAssign<&ManagedDecimalSigned<M, D2>> for ManagedDecimalSigned<M, D1>

Source§

fn mul_assign(&mut self, rhs: &ManagedDecimalSigned<M, D2>)

Performs the *= operation. Read more
Source§

impl<M: ManagedTypeApi, D1: Decimals, D2: Decimals> MulAssign<ManagedDecimalSigned<M, D2>> for ManagedDecimalSigned<M, D1>

Source§

fn mul_assign(&mut self, rhs: ManagedDecimalSigned<M, D2>)

Performs the *= operation. Read more
Source§

impl<M: ManagedTypeApi, DECIMALS: Unsigned> NestedDecode for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>

Source§

fn dep_decode_or_handle_err<I, H>( input: &mut I, h: H, ) -> Result<Self, H::HandledErr>

Version of dep_decode that can handle errors as soon as they occur. For instance in can exit immediately and make sure that if it returns, it is a success. By not deferring error handling, this can lead to somewhat smaller bytecode.
Source§

fn dep_decode<I>(input: &mut I) -> Result<Self, DecodeError>

Attempt to deserialise the value from input, using the format of an object nested inside another structure. In case of success returns the deserialized value and the number of bytes consumed during the operation.
Source§

impl<M: ManagedTypeApi> NestedDecode for ManagedDecimalSigned<M, NumDecimals>

Source§

fn dep_decode_or_handle_err<I, H>( input: &mut I, h: H, ) -> Result<Self, H::HandledErr>

Version of dep_decode that can handle errors as soon as they occur. For instance in can exit immediately and make sure that if it returns, it is a success. By not deferring error handling, this can lead to somewhat smaller bytecode.
Source§

fn dep_decode<I>(input: &mut I) -> Result<Self, DecodeError>

Attempt to deserialise the value from input, using the format of an object nested inside another structure. In case of success returns the deserialized value and the number of bytes consumed during the operation.
Source§

impl<M: ManagedTypeApi, DECIMALS: Unsigned> NestedEncode for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>

Source§

fn dep_encode_or_handle_err<O, H>( &self, dest: &mut O, h: H, ) -> Result<(), H::HandledErr>

Version of dep_encode that can handle errors as soon as they occur. For instance in can exit immediately and make sure that if it returns, it is a success. By not deferring error handling, this can lead to somewhat smaller bytecode.
Source§

fn dep_encode<O>(&self, dest: &mut O) -> Result<(), EncodeError>

NestedEncode to output, using the format of an object nested inside another structure. Does not provide compact version.
Source§

impl<M: ManagedTypeApi> NestedEncode for ManagedDecimalSigned<M, NumDecimals>

Source§

fn dep_encode_or_handle_err<O, H>( &self, dest: &mut O, h: H, ) -> Result<(), H::HandledErr>

Version of dep_encode that can handle errors as soon as they occur. For instance in can exit immediately and make sure that if it returns, it is a success. By not deferring error handling, this can lead to somewhat smaller bytecode.
Source§

fn dep_encode<O>(&self, dest: &mut O) -> Result<(), EncodeError>

NestedEncode to output, using the format of an object nested inside another structure. Does not provide compact version.
Source§

impl<M: ManagedTypeApi, D1: Decimals, D2: Decimals> PartialEq<ManagedDecimalSigned<M, D2>> for ManagedDecimalSigned<M, D1>

Source§

fn eq(&self, other: &ManagedDecimalSigned<M, D2>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<M: ManagedTypeApi, D1: Decimals, D2: Decimals> PartialOrd<ManagedDecimalSigned<M, D2>> for ManagedDecimalSigned<M, D1>

Source§

fn partial_cmp(&self, other: &ManagedDecimalSigned<M, D2>) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 (const: unstable) · Source§

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

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 (const: unstable) · Source§

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

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 (const: unstable) · Source§

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

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 (const: unstable) · Source§

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

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl<M: ManagedTypeApi, D: Decimals> SCDisplay for ManagedDecimalSigned<M, D>

Source§

impl<DECIMALS: Unsigned, M: ManagedTypeApi> Sub<ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>> for ManagedDecimalSigned<M, NumDecimals>

Source§

type Output = ManagedDecimalSigned<M, usize>

The resulting type after applying the - operator.
Source§

fn sub( self, rhs: ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>, ) -> Self::Output

Performs the - operation. Read more
Source§

impl<DECIMALS: Unsigned, M: ManagedTypeApi> Sub<ManagedDecimalSigned<M, usize>> for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>

Source§

type Output = ManagedDecimalSigned<M, usize>

The resulting type after applying the - operator.
Source§

fn sub(self, rhs: ManagedDecimalSigned<M, NumDecimals>) -> Self::Output

Performs the - operation. Read more
Source§

impl<M: ManagedTypeApi, DECIMALS: Unsigned> Sub for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>

Source§

type Output = ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>

The resulting type after applying the - operator.
Source§

fn sub( self, rhs: ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>, ) -> Self::Output

Performs the - operation. Read more
Source§

impl<M: ManagedTypeApi> Sub for ManagedDecimalSigned<M, NumDecimals>

Source§

type Output = ManagedDecimalSigned<M, usize>

The resulting type after applying the - operator.
Source§

fn sub(self, rhs: ManagedDecimalSigned<M, NumDecimals>) -> Self::Output

Performs the - operation. Read more
Source§

impl<M: ManagedTypeApi, D1: Decimals, D2: Decimals> SubAssign<&ManagedDecimalSigned<M, D2>> for ManagedDecimalSigned<M, D1>

Source§

fn sub_assign(&mut self, rhs: &ManagedDecimalSigned<M, D2>)

Performs the -= operation. Read more
Source§

impl<M: ManagedTypeApi, D1: Decimals, D2: Decimals> SubAssign<ManagedDecimalSigned<M, D2>> for ManagedDecimalSigned<M, D1>

Source§

fn sub_assign(&mut self, rhs: ManagedDecimalSigned<M, D2>)

Performs the -= operation. Read more
Source§

impl<M: ManagedTypeApi, DECIMALS: Unsigned> TopDecode for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>

Source§

fn top_decode_or_handle_err<I, H>(input: I, h: H) -> Result<Self, H::HandledErr>

Version of top_decode that can handle errors as soon as they occur. For instance it can exit immediately and make sure that if it returns, it is a success. By not deferring error handling, this can lead to somewhat smaller bytecode.
Source§

fn top_decode<I>(input: I) -> Result<Self, DecodeError>
where I: TopDecodeInput,

Attempt to deserialize the value from input.
Source§

impl<M: ManagedTypeApi> TopDecode for ManagedDecimalSigned<M, NumDecimals>

Source§

fn top_decode_or_handle_err<I, H>( top_input: I, h: H, ) -> Result<Self, H::HandledErr>

Version of top_decode that can handle errors as soon as they occur. For instance it can exit immediately and make sure that if it returns, it is a success. By not deferring error handling, this can lead to somewhat smaller bytecode.
Source§

fn top_decode<I>(input: I) -> Result<Self, DecodeError>
where I: TopDecodeInput,

Attempt to deserialize the value from input.
Source§

impl<M: ManagedTypeApi, DECIMALS: Unsigned> TopEncode for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>

Source§

fn top_encode_or_handle_err<O, H>( &self, output: O, h: H, ) -> Result<(), H::HandledErr>

Version of top_encode that can handle errors as soon as they occur. For instance in can exit immediately and make sure that if it returns, it is a success. By not deferring error handling, this can lead to somewhat smaller bytecode.
Source§

fn top_encode<O>(&self, output: O) -> Result<(), EncodeError>
where O: TopEncodeOutput,

Attempt to serialize the value to output.
Source§

impl<M: ManagedTypeApi> TopEncode for ManagedDecimalSigned<M, NumDecimals>

Source§

fn top_encode_or_handle_err<O, H>( &self, output: O, h: H, ) -> Result<(), H::HandledErr>

Version of top_encode that can handle errors as soon as they occur. For instance in can exit immediately and make sure that if it returns, it is a success. By not deferring error handling, this can lead to somewhat smaller bytecode.
Source§

fn top_encode<O>(&self, output: O) -> Result<(), EncodeError>
where O: TopEncodeOutput,

Attempt to serialize the value to output.
Source§

impl<M: ManagedTypeApi, DECIMALS: Unsigned> TypeAbi for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>

Source§

type Unmanaged = ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>

Source§

fn type_name() -> TypeName

The type name, as it shows up in the ABI.
Source§

fn type_name_rust() -> TypeName

The type name as it shows up in Rust code. Used for proxies. Read more
Source§

fn type_names() -> TypeNames

Source§

fn type_name_specific() -> Option<TypeName>

Specific name to be optionally added to the ABI. Read more
Source§

fn provide_type_descriptions<TDC: TypeDescriptionContainer>( accumulator: &mut TDC, )

A type can provide more than its own name. For instance, a struct can also provide the descriptions of the type of its fields. TypeAbi doesn’t care for the exact accumulator type, which is abstracted by the TypeDescriptionContainer trait.
Source§

impl<M: ManagedTypeApi> TypeAbi for ManagedDecimalSigned<M, NumDecimals>

Source§

type Unmanaged = ManagedDecimalSigned<M, usize>

Source§

fn type_name() -> TypeName

The type name, as it shows up in the ABI.
Source§

fn type_names() -> TypeNames

Source§

fn type_name_rust() -> TypeName

The type name as it shows up in Rust code. Used for proxies. Read more
Source§

fn type_name_specific() -> Option<TypeName>

Specific name to be optionally added to the ABI. Read more
Source§

fn provide_type_descriptions<TDC: TypeDescriptionContainer>( accumulator: &mut TDC, )

A type can provide more than its own name. For instance, a struct can also provide the descriptions of the type of its fields. TypeAbi doesn’t care for the exact accumulator type, which is abstracted by the TypeDescriptionContainer trait.
Source§

impl<M: ManagedTypeApi, DECIMALS: Unsigned> TypeAbiFrom<ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>> for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>

Source§

impl<M: ManagedTypeApi> TypeAbiFrom<ManagedDecimalSigned<M, usize>> for ManagedDecimalSigned<M, NumDecimals>

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> 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> 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> MultiValueConstLength for T
where T: TopEncode + TopDecode,

Source§

const MULTI_VALUE_CONST_LEN: usize = 1

The fixed (constant) number of single items contained a multi-value. Read more
Source§

impl<T> MultiValueLength for T
where T: TopEncode + TopDecode,

Source§

fn multi_value_len(&self) -> usize

The number of single items contained a multi-value.
Source§

impl<T> SCCodec for T
where T: TopEncode,

Source§

fn fmt<F>(&self, f: &mut F)

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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> TopDecodeMulti for T
where T: TopDecode,

Source§

const IS_SINGLE_VALUE: bool = true

Used to optimize single value loading of endpoint arguments.
Source§

fn multi_decode_or_handle_err<I, H>( input: &mut I, h: H, ) -> Result<T, <H as DecodeErrorHandler>::HandledErr>

Source§

fn multi_decode<I>(input: &mut I) -> Result<Self, DecodeError>

Source§

impl<T> TopEncodeMulti for T
where T: TopEncode,

Source§

fn multi_encode_or_handle_err<O, H>( &self, output: &mut O, h: H, ) -> Result<(), <H as EncodeErrorHandler>::HandledErr>

Version of top_encode that can handle errors as soon as they occur. For instance in can exit immediately and make sure that if it returns, it is a success. By not deferring error handling, this can lead to somewhat smaller bytecode.
Source§

fn multi_encode<O>(&self, output: &mut O) -> Result<(), EncodeError>

Attempt to serialize the value to output.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.
Source§

impl<O, T> ProxyArg<O> for T
where O: TypeAbiFrom<T>, T: TopEncodeMulti,

Source§

impl<T, U> TypeAbiFrom<TypeAbiUniversalInput<T>> for U