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>
impl<M: ManagedTypeApi, D1: Decimals> ManagedDecimalSigned<M, D1>
Sourcepub fn mul_half_up_signed<D2: Decimals, DResult: Decimals>(
&self,
other: &ManagedDecimalSigned<M, D2>,
precision: DResult,
) -> ManagedDecimalSigned<M, DResult>
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) / scaleThe 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.
Sourcepub fn div_half_up_signed<D2: Decimals, DResult: Decimals>(
&self,
other: &ManagedDecimalSigned<M, D2>,
precision: DResult,
) -> ManagedDecimalSigned<M, DResult>
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) / denominatorThis 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>
impl<M: ManagedTypeApi, D: Decimals> ManagedDecimalSigned<M, D>
Sourcepub fn ln(&self) -> Option<ManagedDecimalSigned<M, LnDecimals>>
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.
Sourcepub fn log2(&self) -> Option<ManagedDecimalSigned<M, LnDecimals>>
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>
impl<M: ManagedTypeApi, D1: Decimals> ManagedDecimalSigned<M, D1>
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>
impl<M: ManagedTypeApi, D: Decimals> ManagedDecimalSigned<M, D>
Sourcepub fn trunc(&self) -> BigInt<M>
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.
Sourcepub fn as_raw_units(&self) -> &BigInt<M>
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.
Sourcepub 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.
pub fn into_raw_units(&self) -> &BigInt<M>
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.
Sourcepub fn into_raw_parts(self) -> (BigInt<M>, D)
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.
Sourcepub fn from_raw_units(data: BigInt<M>, decimals: D) -> Self
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.
Sourcepub fn scaling_factor(&self) -> ManagedRef<'static, M, BigUint<M>>
pub fn scaling_factor(&self) -> ManagedRef<'static, M, BigUint<M>>
Returns the scaling factor 10^decimals as a static reference.
Sourcepub fn rescale<T: Decimals>(&self, scale_to: T) -> ManagedDecimalSigned<M, T>
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.
Sourcepub fn into_unsigned_or_fail(self) -> ManagedDecimal<M, D>
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§impl<M: ManagedTypeApi, DECIMALS: Unsigned> ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>
impl<M: ManagedTypeApi, DECIMALS: Unsigned> ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>
Sourcepub fn const_decimals_from_raw(data: BigInt<M>) -> Self
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.
Sourcepub fn into_var_decimals(self) -> ManagedDecimalSigned<M, NumDecimals>
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>
impl<M: ManagedTypeApi, D: Decimals> ManagedDecimalSigned<M, D>
Sourcepub fn to_big_float(&self) -> BigFloat<M>
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.
Sourcepub fn from_big_float<T: Decimals>(
big_float: &BigFloat<M>,
num_decimals: T,
) -> ManagedDecimalSigned<M, T>
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>
impl<DECIMALS: Unsigned, M: ManagedTypeApi> Add<ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>> for ManagedDecimalSigned<M, NumDecimals>
Source§type Output = ManagedDecimalSigned<M, usize>
type Output = ManagedDecimalSigned<M, usize>
+ operator.Source§fn add(
self,
rhs: ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>,
) -> Self::Output
fn add( self, rhs: ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>, ) -> Self::Output
+ operation. Read moreSource§impl<DECIMALS: Unsigned, M: ManagedTypeApi> Add<ManagedDecimalSigned<M, usize>> for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>
impl<DECIMALS: Unsigned, M: ManagedTypeApi> Add<ManagedDecimalSigned<M, usize>> for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>
Source§type Output = ManagedDecimalSigned<M, usize>
type Output = ManagedDecimalSigned<M, usize>
+ operator.Source§fn add(self, rhs: ManagedDecimalSigned<M, NumDecimals>) -> Self::Output
fn add(self, rhs: ManagedDecimalSigned<M, NumDecimals>) -> Self::Output
+ operation. Read moreSource§impl<M: ManagedTypeApi, DECIMALS: Unsigned> Add for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>
impl<M: ManagedTypeApi, DECIMALS: Unsigned> Add for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>
Source§type Output = ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>
type Output = ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>
+ operator.Source§fn add(
self,
rhs: ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>,
) -> Self::Output
fn add( self, rhs: ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>, ) -> Self::Output
+ operation. Read moreSource§impl<M: ManagedTypeApi> Add for ManagedDecimalSigned<M, NumDecimals>
impl<M: ManagedTypeApi> Add for ManagedDecimalSigned<M, NumDecimals>
Source§type Output = ManagedDecimalSigned<M, usize>
type Output = ManagedDecimalSigned<M, usize>
+ operator.Source§fn add(self, rhs: ManagedDecimalSigned<M, NumDecimals>) -> Self::Output
fn add(self, rhs: ManagedDecimalSigned<M, NumDecimals>) -> Self::Output
+ operation. Read moreSource§impl<M: ManagedTypeApi, D1: Decimals, D2: Decimals> AddAssign<&ManagedDecimalSigned<M, D2>> for ManagedDecimalSigned<M, D1>
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>)
fn add_assign(&mut self, rhs: &ManagedDecimalSigned<M, D2>)
+= operation. Read moreSource§impl<M: ManagedTypeApi, D1: Decimals, D2: Decimals> AddAssign<ManagedDecimalSigned<M, D2>> for ManagedDecimalSigned<M, D1>
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>)
fn add_assign(&mut self, rhs: ManagedDecimalSigned<M, D2>)
+= operation. Read moreSource§impl<M: Clone + ManagedTypeApi, D: Clone + Decimals> Clone for ManagedDecimalSigned<M, D>
impl<M: Clone + ManagedTypeApi, D: Clone + Decimals> Clone for ManagedDecimalSigned<M, D>
Source§fn clone(&self) -> ManagedDecimalSigned<M, D>
fn clone(&self) -> ManagedDecimalSigned<M, D>
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<M: ManagedTypeApi, D: Decimals> Debug for ManagedDecimalSigned<M, D>
impl<M: ManagedTypeApi, D: Decimals> Debug for ManagedDecimalSigned<M, D>
Source§impl<M: ManagedTypeApi, D: Decimals> Display for ManagedDecimalSigned<M, D>
impl<M: ManagedTypeApi, D: Decimals> Display for ManagedDecimalSigned<M, D>
Source§impl<DECIMALS: Unsigned, M: ManagedTypeApi> Div<ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>> for ManagedDecimalSigned<M, NumDecimals>
impl<DECIMALS: Unsigned, M: ManagedTypeApi> Div<ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>> for ManagedDecimalSigned<M, NumDecimals>
Source§type Output = ManagedDecimalSigned<M, usize>
type Output = ManagedDecimalSigned<M, usize>
/ operator.Source§fn div(
self,
rhs: ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>,
) -> Self::Output
fn div( self, rhs: ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>, ) -> Self::Output
/ operation. Read moreSource§impl<M: ManagedTypeApi, D1, D2: Decimals> Div<ManagedDecimalSigned<M, D2>> for ManagedDecimalSigned<M, D1>
impl<M: ManagedTypeApi, D1, D2: Decimals> Div<ManagedDecimalSigned<M, D2>> for ManagedDecimalSigned<M, D1>
Source§impl<DECIMALS: Unsigned, M: ManagedTypeApi> Div<ManagedDecimalSigned<M, usize>> for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>
impl<DECIMALS: Unsigned, M: ManagedTypeApi> Div<ManagedDecimalSigned<M, usize>> for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>
Source§type Output = ManagedDecimalSigned<M, usize>
type Output = ManagedDecimalSigned<M, usize>
/ operator.Source§fn div(self, rhs: ManagedDecimalSigned<M, NumDecimals>) -> Self::Output
fn div(self, rhs: ManagedDecimalSigned<M, NumDecimals>) -> Self::Output
/ operation. Read moreSource§impl<M: ManagedTypeApi, D: Decimals> Div<usize> for ManagedDecimalSigned<M, D>
impl<M: ManagedTypeApi, D: Decimals> Div<usize> for ManagedDecimalSigned<M, D>
Source§type Output = ManagedDecimalSigned<M, D>
type Output = ManagedDecimalSigned<M, D>
/ operator.Source§impl<M: ManagedTypeApi, D1: Decimals, D2: Decimals> DivAssign<&ManagedDecimalSigned<M, D2>> for ManagedDecimalSigned<M, D1>
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>)
fn div_assign(&mut self, rhs: &ManagedDecimalSigned<M, D2>)
/= operation. Read moreSource§impl<M: ManagedTypeApi, D1: Decimals, D2: Decimals> DivAssign<ManagedDecimalSigned<M, D2>> for ManagedDecimalSigned<M, D1>
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>)
fn div_assign(&mut self, rhs: ManagedDecimalSigned<M, D2>)
/= operation. Read moreSource§impl<M: ManagedTypeApi, DECIMALS: Unsigned> From<&BigFloat<M>> for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>
impl<M: ManagedTypeApi, DECIMALS: Unsigned> From<&BigFloat<M>> for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>
Source§impl<M: ManagedTypeApi, DECIMALS: Unsigned> From<BigFloat<M>> for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>
impl<M: ManagedTypeApi, DECIMALS: Unsigned> From<BigFloat<M>> for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>
Source§impl<M: ManagedTypeApi, DECIMALS: Unsigned> From<BigInt<M>> for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>
impl<M: ManagedTypeApi, DECIMALS: Unsigned> From<BigInt<M>> for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>
Source§impl<M: ManagedTypeApi, DECIMALS: Unsigned> From<f32> for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>
impl<M: ManagedTypeApi, DECIMALS: Unsigned> From<f32> for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>
Source§impl<M: ManagedTypeApi, DECIMALS: Unsigned> From<f64> for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>
impl<M: ManagedTypeApi, DECIMALS: Unsigned> From<f64> for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>
Source§impl<M: ManagedTypeApi, DECIMALS: Unsigned> From<i64> for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>
impl<M: ManagedTypeApi, DECIMALS: Unsigned> From<i64> for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>
Source§impl<M: ManagedTypeApi, DECIMALS: Unsigned> ManagedVecItem for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>
impl<M: ManagedTypeApi, DECIMALS: Unsigned> ManagedVecItem for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>
Source§const SKIPS_RESERIALIZATION: bool = false
const SKIPS_RESERIALIZATION: bool = false
u32).Source§type PAYLOAD = ManagedVecItemPayloadBuffer<UInt<UInt<UInt<UTerm, B1>, B0>, B0>>
type PAYLOAD = ManagedVecItemPayloadBuffer<UInt<UInt<UInt<UTerm, B1>, B0>, B0>>
Source§type Ref<'a> = Ref<'a, ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>>
type Ref<'a> = Ref<'a, ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>>
Source§unsafe fn read_from_payload(payload: &Self::PAYLOAD) -> Self
unsafe fn read_from_payload(payload: &Self::PAYLOAD) -> Self
Source§unsafe fn borrow_from_payload<'a>(payload: &Self::PAYLOAD) -> Self::Ref<'a>
unsafe fn borrow_from_payload<'a>(payload: &Self::PAYLOAD) -> Self::Ref<'a>
Source§fn save_to_payload(self, payload: &mut Self::PAYLOAD)
fn save_to_payload(self, payload: &mut Self::PAYLOAD)
Source§fn requires_drop() -> bool
fn requires_drop() -> bool
fn payload_size() -> usize
fn temp_decode<F, R>(payload: &Self::PAYLOAD, f: F) -> Rwhere
F: FnOnce(&Self) -> R,
Source§impl<M: ManagedTypeApi> ManagedVecItem for ManagedDecimalSigned<M, NumDecimals>
impl<M: ManagedTypeApi> ManagedVecItem for ManagedDecimalSigned<M, NumDecimals>
Source§const SKIPS_RESERIALIZATION: bool = false
const SKIPS_RESERIALIZATION: bool = false
u32).Source§type PAYLOAD = ManagedVecItemPayloadBuffer<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>>
type PAYLOAD = ManagedVecItemPayloadBuffer<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>>
Source§type Ref<'a> = Ref<'a, ManagedDecimalSigned<M, usize>>
type Ref<'a> = Ref<'a, ManagedDecimalSigned<M, usize>>
Source§unsafe fn read_from_payload(payload: &Self::PAYLOAD) -> Self
unsafe fn read_from_payload(payload: &Self::PAYLOAD) -> Self
Source§unsafe fn borrow_from_payload<'a>(payload: &Self::PAYLOAD) -> Self::Ref<'a>
unsafe fn borrow_from_payload<'a>(payload: &Self::PAYLOAD) -> Self::Ref<'a>
Source§fn save_to_payload(self, payload: &mut Self::PAYLOAD)
fn save_to_payload(self, payload: &mut Self::PAYLOAD)
Source§fn requires_drop() -> bool
fn requires_drop() -> bool
fn payload_size() -> usize
fn temp_decode<F, R>(payload: &Self::PAYLOAD, f: F) -> Rwhere
F: FnOnce(&Self) -> R,
Source§impl<DECIMALS: Unsigned, M: ManagedTypeApi> Mul<ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>> for ManagedDecimalSigned<M, NumDecimals>
impl<DECIMALS: Unsigned, M: ManagedTypeApi> Mul<ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>> for ManagedDecimalSigned<M, NumDecimals>
Source§type Output = ManagedDecimalSigned<M, usize>
type Output = ManagedDecimalSigned<M, usize>
* operator.Source§fn mul(
self,
rhs: ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>,
) -> Self::Output
fn mul( self, rhs: ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>, ) -> Self::Output
* operation. Read moreSource§impl<M: ManagedTypeApi, D1, D2: Decimals> Mul<ManagedDecimalSigned<M, D2>> for ManagedDecimalSigned<M, D1>
impl<M: ManagedTypeApi, D1, D2: Decimals> Mul<ManagedDecimalSigned<M, D2>> for ManagedDecimalSigned<M, D1>
Source§impl<DECIMALS: Unsigned, M: ManagedTypeApi> Mul<ManagedDecimalSigned<M, usize>> for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>
impl<DECIMALS: Unsigned, M: ManagedTypeApi> Mul<ManagedDecimalSigned<M, usize>> for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>
Source§type Output = ManagedDecimalSigned<M, usize>
type Output = ManagedDecimalSigned<M, usize>
* operator.Source§fn mul(self, rhs: ManagedDecimalSigned<M, NumDecimals>) -> Self::Output
fn mul(self, rhs: ManagedDecimalSigned<M, NumDecimals>) -> Self::Output
* operation. Read moreSource§impl<M: ManagedTypeApi, D1: Decimals, D2: Decimals> MulAssign<&ManagedDecimalSigned<M, D2>> for ManagedDecimalSigned<M, D1>
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>)
fn mul_assign(&mut self, rhs: &ManagedDecimalSigned<M, D2>)
*= operation. Read moreSource§impl<M: ManagedTypeApi, D1: Decimals, D2: Decimals> MulAssign<ManagedDecimalSigned<M, D2>> for ManagedDecimalSigned<M, D1>
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>)
fn mul_assign(&mut self, rhs: ManagedDecimalSigned<M, D2>)
*= operation. Read moreSource§impl<M: ManagedTypeApi, DECIMALS: Unsigned> NestedDecode for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>
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>where
I: NestedDecodeInput,
H: DecodeErrorHandler,
fn dep_decode_or_handle_err<I, H>(
input: &mut I,
h: H,
) -> Result<Self, H::HandledErr>where
I: NestedDecodeInput,
H: DecodeErrorHandler,
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>where
I: NestedDecodeInput,
fn dep_decode<I>(input: &mut I) -> Result<Self, DecodeError>where
I: NestedDecodeInput,
Source§impl<M: ManagedTypeApi> NestedDecode for ManagedDecimalSigned<M, NumDecimals>
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>where
I: NestedDecodeInput,
H: DecodeErrorHandler,
fn dep_decode_or_handle_err<I, H>(
input: &mut I,
h: H,
) -> Result<Self, H::HandledErr>where
I: NestedDecodeInput,
H: DecodeErrorHandler,
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>where
I: NestedDecodeInput,
fn dep_decode<I>(input: &mut I) -> Result<Self, DecodeError>where
I: NestedDecodeInput,
Source§impl<M: ManagedTypeApi, DECIMALS: Unsigned> NestedEncode for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>
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>where
O: NestedEncodeOutput,
H: EncodeErrorHandler,
fn dep_encode_or_handle_err<O, H>(
&self,
dest: &mut O,
h: H,
) -> Result<(), H::HandledErr>where
O: NestedEncodeOutput,
H: EncodeErrorHandler,
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>where
O: NestedEncodeOutput,
fn dep_encode<O>(&self, dest: &mut O) -> Result<(), EncodeError>where
O: NestedEncodeOutput,
Source§impl<M: ManagedTypeApi> NestedEncode for ManagedDecimalSigned<M, NumDecimals>
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>where
O: NestedEncodeOutput,
H: EncodeErrorHandler,
fn dep_encode_or_handle_err<O, H>(
&self,
dest: &mut O,
h: H,
) -> Result<(), H::HandledErr>where
O: NestedEncodeOutput,
H: EncodeErrorHandler,
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>where
O: NestedEncodeOutput,
fn dep_encode<O>(&self, dest: &mut O) -> Result<(), EncodeError>where
O: NestedEncodeOutput,
Source§impl<M: ManagedTypeApi, D1: Decimals, D2: Decimals> PartialEq<ManagedDecimalSigned<M, D2>> for ManagedDecimalSigned<M, D1>
impl<M: ManagedTypeApi, D1: Decimals, D2: Decimals> PartialEq<ManagedDecimalSigned<M, D2>> for ManagedDecimalSigned<M, D1>
Source§fn eq(&self, other: &ManagedDecimalSigned<M, D2>) -> bool
fn eq(&self, other: &ManagedDecimalSigned<M, D2>) -> bool
self and other values to be equal, and is used by ==.Source§impl<M: ManagedTypeApi, D1: Decimals, D2: Decimals> PartialOrd<ManagedDecimalSigned<M, D2>> for ManagedDecimalSigned<M, D1>
impl<M: ManagedTypeApi, D1: Decimals, D2: Decimals> PartialOrd<ManagedDecimalSigned<M, D2>> for ManagedDecimalSigned<M, D1>
Source§impl<M: ManagedTypeApi, D: Decimals> SCDisplay for ManagedDecimalSigned<M, D>
impl<M: ManagedTypeApi, D: Decimals> SCDisplay for ManagedDecimalSigned<M, D>
fn fmt<F: FormatByteReceiver>(&self, f: &mut F)
Source§impl<DECIMALS: Unsigned, M: ManagedTypeApi> Sub<ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>> for ManagedDecimalSigned<M, NumDecimals>
impl<DECIMALS: Unsigned, M: ManagedTypeApi> Sub<ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>> for ManagedDecimalSigned<M, NumDecimals>
Source§type Output = ManagedDecimalSigned<M, usize>
type Output = ManagedDecimalSigned<M, usize>
- operator.Source§fn sub(
self,
rhs: ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>,
) -> Self::Output
fn sub( self, rhs: ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>, ) -> Self::Output
- operation. Read moreSource§impl<DECIMALS: Unsigned, M: ManagedTypeApi> Sub<ManagedDecimalSigned<M, usize>> for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>
impl<DECIMALS: Unsigned, M: ManagedTypeApi> Sub<ManagedDecimalSigned<M, usize>> for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>
Source§type Output = ManagedDecimalSigned<M, usize>
type Output = ManagedDecimalSigned<M, usize>
- operator.Source§fn sub(self, rhs: ManagedDecimalSigned<M, NumDecimals>) -> Self::Output
fn sub(self, rhs: ManagedDecimalSigned<M, NumDecimals>) -> Self::Output
- operation. Read moreSource§impl<M: ManagedTypeApi, DECIMALS: Unsigned> Sub for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>
impl<M: ManagedTypeApi, DECIMALS: Unsigned> Sub for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>
Source§type Output = ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>
type Output = ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>
- operator.Source§fn sub(
self,
rhs: ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>,
) -> Self::Output
fn sub( self, rhs: ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>, ) -> Self::Output
- operation. Read moreSource§impl<M: ManagedTypeApi> Sub for ManagedDecimalSigned<M, NumDecimals>
impl<M: ManagedTypeApi> Sub for ManagedDecimalSigned<M, NumDecimals>
Source§type Output = ManagedDecimalSigned<M, usize>
type Output = ManagedDecimalSigned<M, usize>
- operator.Source§fn sub(self, rhs: ManagedDecimalSigned<M, NumDecimals>) -> Self::Output
fn sub(self, rhs: ManagedDecimalSigned<M, NumDecimals>) -> Self::Output
- operation. Read moreSource§impl<M: ManagedTypeApi, D1: Decimals, D2: Decimals> SubAssign<&ManagedDecimalSigned<M, D2>> for ManagedDecimalSigned<M, D1>
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>)
fn sub_assign(&mut self, rhs: &ManagedDecimalSigned<M, D2>)
-= operation. Read moreSource§impl<M: ManagedTypeApi, D1: Decimals, D2: Decimals> SubAssign<ManagedDecimalSigned<M, D2>> for ManagedDecimalSigned<M, D1>
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>)
fn sub_assign(&mut self, rhs: ManagedDecimalSigned<M, D2>)
-= operation. Read moreSource§impl<M: ManagedTypeApi, DECIMALS: Unsigned> TopDecode for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>
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>where
I: TopDecodeInput,
H: DecodeErrorHandler,
fn top_decode_or_handle_err<I, H>(input: I, h: H) -> Result<Self, H::HandledErr>where
I: TopDecodeInput,
H: DecodeErrorHandler,
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,
fn top_decode<I>(input: I) -> Result<Self, DecodeError>where
I: TopDecodeInput,
Source§impl<M: ManagedTypeApi> TopDecode for ManagedDecimalSigned<M, NumDecimals>
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>where
I: TopDecodeInput,
H: DecodeErrorHandler,
fn top_decode_or_handle_err<I, H>(
top_input: I,
h: H,
) -> Result<Self, H::HandledErr>where
I: TopDecodeInput,
H: DecodeErrorHandler,
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,
fn top_decode<I>(input: I) -> Result<Self, DecodeError>where
I: TopDecodeInput,
Source§impl<M: ManagedTypeApi, DECIMALS: Unsigned> TopEncode for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>
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>where
O: TopEncodeOutput,
H: EncodeErrorHandler,
fn top_encode_or_handle_err<O, H>(
&self,
output: O,
h: H,
) -> Result<(), H::HandledErr>where
O: TopEncodeOutput,
H: EncodeErrorHandler,
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,
fn top_encode<O>(&self, output: O) -> Result<(), EncodeError>where
O: TopEncodeOutput,
Source§impl<M: ManagedTypeApi> TopEncode for ManagedDecimalSigned<M, NumDecimals>
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>where
O: TopEncodeOutput,
H: EncodeErrorHandler,
fn top_encode_or_handle_err<O, H>(
&self,
output: O,
h: H,
) -> Result<(), H::HandledErr>where
O: TopEncodeOutput,
H: EncodeErrorHandler,
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,
fn top_encode<O>(&self, output: O) -> Result<(), EncodeError>where
O: TopEncodeOutput,
Source§impl<M: ManagedTypeApi, DECIMALS: Unsigned> TypeAbi for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>
impl<M: ManagedTypeApi, DECIMALS: Unsigned> TypeAbi for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>
type Unmanaged = ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>
Source§fn type_name_rust() -> TypeName
fn type_name_rust() -> TypeName
fn type_names() -> TypeNames
Source§fn type_name_specific() -> Option<TypeName>
fn type_name_specific() -> Option<TypeName>
Source§fn provide_type_descriptions<TDC: TypeDescriptionContainer>(
accumulator: &mut TDC,
)
fn provide_type_descriptions<TDC: TypeDescriptionContainer>( accumulator: &mut TDC, )
Source§impl<M: ManagedTypeApi> TypeAbi for ManagedDecimalSigned<M, NumDecimals>
impl<M: ManagedTypeApi> TypeAbi for ManagedDecimalSigned<M, NumDecimals>
type Unmanaged = ManagedDecimalSigned<M, usize>
fn type_names() -> TypeNames
Source§fn type_name_rust() -> TypeName
fn type_name_rust() -> TypeName
Source§fn type_name_specific() -> Option<TypeName>
fn type_name_specific() -> Option<TypeName>
Source§fn provide_type_descriptions<TDC: TypeDescriptionContainer>(
accumulator: &mut TDC,
)
fn provide_type_descriptions<TDC: TypeDescriptionContainer>( accumulator: &mut TDC, )
impl<M: ManagedTypeApi, DECIMALS: Unsigned> TypeAbiFrom<ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>> for ManagedDecimalSigned<M, ConstDecimals<DECIMALS>>
impl<M: ManagedTypeApi> TypeAbiFrom<ManagedDecimalSigned<M, usize>> for ManagedDecimalSigned<M, NumDecimals>
Auto Trait Implementations§
impl<M, D> Freeze for ManagedDecimalSigned<M, D>
impl<M, D> RefUnwindSafe for ManagedDecimalSigned<M, D>
impl<M, D> Send for ManagedDecimalSigned<M, D>
impl<M, D> Sync for ManagedDecimalSigned<M, D>
impl<M, D> Unpin for ManagedDecimalSigned<M, D>
impl<M, D> UnsafeUnpin for ManagedDecimalSigned<M, D>
impl<M, D> UnwindSafe for ManagedDecimalSigned<M, D>
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<T> MultiValueConstLength for T
impl<T> MultiValueConstLength for T
Source§const MULTI_VALUE_CONST_LEN: usize = 1
const MULTI_VALUE_CONST_LEN: usize = 1
Source§impl<T> MultiValueLength for T
impl<T> MultiValueLength for T
Source§fn multi_value_len(&self) -> usize
fn multi_value_len(&self) -> usize
Source§impl<T> SCCodec for Twhere
T: TopEncode,
impl<T> SCCodec for Twhere
T: TopEncode,
fn fmt<F>(&self, f: &mut F)where
F: FormatByteReceiver,
Source§impl<T> TopDecodeMulti for Twhere
T: TopDecode,
impl<T> TopDecodeMulti for Twhere
T: TopDecode,
Source§const IS_SINGLE_VALUE: bool = true
const IS_SINGLE_VALUE: bool = true
fn multi_decode_or_handle_err<I, H>(
input: &mut I,
h: H,
) -> Result<T, <H as DecodeErrorHandler>::HandledErr>where
I: TopDecodeMultiInput,
H: DecodeErrorHandler,
fn multi_decode<I>(input: &mut I) -> Result<Self, DecodeError>where
I: TopDecodeMultiInput,
Source§impl<T> TopEncodeMulti for Twhere
T: TopEncode,
impl<T> TopEncodeMulti for Twhere
T: TopEncode,
Source§fn multi_encode_or_handle_err<O, H>(
&self,
output: &mut O,
h: H,
) -> Result<(), <H as EncodeErrorHandler>::HandledErr>where
O: TopEncodeMultiOutput,
H: EncodeErrorHandler,
fn multi_encode_or_handle_err<O, H>(
&self,
output: &mut O,
h: H,
) -> Result<(), <H as EncodeErrorHandler>::HandledErr>where
O: TopEncodeMultiOutput,
H: EncodeErrorHandler,
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.