Struct sp_arithmetic::per_things::Perbill
source · pub struct Perbill(_);
Expand description
A fixed point representation of a number in the range [0, 1].
Parts per Billion
Implementations
sourceimpl Perbill
impl Perbill
sourcepub const fn from_parts(parts: u32) -> Self
pub const fn from_parts(parts: u32) -> Self
From an explicitly defined number of parts per maximum of the type.
sourcepub const fn from_percent(x: u32) -> Self
pub const fn from_percent(x: u32) -> Self
Converts a percent into Self
. Equal to x / 100
.
This can be created at compile time.
sourcepub const fn one() -> Self
pub const fn one() -> Self
See PerThing::one
sourcepub fn is_one(&self) -> bool
pub fn is_one(&self) -> bool
See PerThing::is_one
.
sourcepub const fn zero() -> Self
pub const fn zero() -> Self
See PerThing::zero
.
sourcepub fn is_zero(&self) -> bool
pub fn is_zero(&self) -> bool
See PerThing::is_zero
.
sourcepub const fn deconstruct(self) -> u32
pub const fn deconstruct(self) -> u32
sourcepub fn square(self) -> Self
pub fn square(self) -> Self
See PerThing::square
.
sourcepub fn from_float(x: f64) -> Self
pub fn from_float(x: f64) -> Self
See PerThing::from_float
.
sourcepub fn from_rational_approximation<N>(p: N, q: N) -> Selfwhere
N: RationalArg + TryInto<u32> + TryInto<u64>,
u32: Into<N>,
👎Deprecated: Use PerThing::from_rational
instead
pub fn from_rational_approximation<N>(p: N, q: N) -> Selfwhere
N: RationalArg + TryInto<u32> + TryInto<u64>,
u32: Into<N>,
PerThing::from_rational
insteadsourcepub fn from_rational<N>(p: N, q: N) -> Selfwhere
N: RationalArg + TryInto<u32> + TryInto<u64>,
u32: Into<N>,
pub fn from_rational<N>(p: N, q: N) -> Selfwhere
N: RationalArg + TryInto<u32> + TryInto<u64>,
u32: Into<N>,
sourcepub fn int_mul(self, b: u32) -> Self
pub fn int_mul(self, b: u32) -> Self
Integer multiplication with another value, saturating at 1.
sourcepub fn mul_floor<N>(self, b: N) -> Nwhere
N: MultiplyArg + UniqueSaturatedInto<u32>,
u32: Into<N>,
pub fn mul_floor<N>(self, b: N) -> Nwhere
N: MultiplyArg + UniqueSaturatedInto<u32>,
u32: Into<N>,
See PerThing::mul_floor
.
sourcepub fn mul_ceil<N>(self, b: N) -> Nwhere
N: MultiplyArg + UniqueSaturatedInto<u32>,
u32: Into<N>,
pub fn mul_ceil<N>(self, b: N) -> Nwhere
N: MultiplyArg + UniqueSaturatedInto<u32>,
u32: Into<N>,
See PerThing::mul_ceil
.
sourcepub fn saturating_reciprocal_mul<N>(self, b: N) -> Nwhere
N: ReciprocalArg + UniqueSaturatedInto<u32>,
u32: Into<N>,
pub fn saturating_reciprocal_mul<N>(self, b: N) -> Nwhere
N: ReciprocalArg + UniqueSaturatedInto<u32>,
u32: Into<N>,
sourcepub fn saturating_reciprocal_mul_floor<N>(self, b: N) -> Nwhere
N: ReciprocalArg + UniqueSaturatedInto<u32>,
u32: Into<N>,
pub fn saturating_reciprocal_mul_floor<N>(self, b: N) -> Nwhere
N: ReciprocalArg + UniqueSaturatedInto<u32>,
u32: Into<N>,
sourcepub fn saturating_reciprocal_mul_ceil<N>(self, b: N) -> Nwhere
N: ReciprocalArg + UniqueSaturatedInto<u32>,
u32: Into<N>,
pub fn saturating_reciprocal_mul_ceil<N>(self, b: N) -> Nwhere
N: ReciprocalArg + UniqueSaturatedInto<u32>,
u32: Into<N>,
sourcepub fn saturating_div(self, rhs: Self, r: Rounding) -> Self
pub fn saturating_div(self, rhs: Self, r: Rounding) -> Self
Saturating division. Compute self / rhs
, saturating at one if rhs < self
.
The rounding
method must be specified. e.g.:
let pc = |x| Percent::from_percent(x);
assert_eq!(
pc(2).saturating_div(pc(3), Down),
pc(66),
);
assert_eq!(
pc(1).saturating_div(pc(3), NearestPrefUp),
pc(33),
);
assert_eq!(
pc(2).saturating_div(pc(3), NearestPrefDown),
pc(67),
);
assert_eq!(
pc(1).saturating_div(pc(3), Up),
pc(34),
);
sourceimpl Perbill
impl Perbill
sourcepub const fn from_perthousand(x: u32) -> Self
pub const fn from_perthousand(x: u32) -> Self
Converts a percent into Self
. Equal to x / 1000
.
This can be created at compile time.
Trait Implementations
sourceimpl CheckedAdd for Perbill
impl CheckedAdd for Perbill
sourcefn checked_add(&self, rhs: &Self) -> Option<Self>
fn checked_add(&self, rhs: &Self) -> Option<Self>
None
is
returned. Read moresourceimpl CheckedMul for Perbill
impl CheckedMul for Perbill
Note
CheckedMul will never fail for PerThings.
sourcefn checked_mul(&self, rhs: &Self) -> Option<Self>
fn checked_mul(&self, rhs: &Self) -> Option<Self>
None
is returned. Read moresourceimpl CheckedSub for Perbill
impl CheckedSub for Perbill
sourcefn checked_sub(&self, v: &Self) -> Option<Self>
fn checked_sub(&self, v: &Self) -> Option<Self>
None
is returned. Read moresourceimpl CompactAs for Perbill
impl CompactAs for Perbill
Implementation makes any compact encoding of PerThing::Inner
valid,
when decoding it will saturate up to PerThing::ACCURACY
.
sourceimpl Decode for Perbill
impl Decode for Perbill
sourcefn decode<I: Input>(input: &mut I) -> Result<Self, Error>
fn decode<I: Input>(input: &mut I) -> Result<Self, Error>
fn skip<I>(input: &mut I) -> Result<(), Error>where
I: Input,
fn skip<I>(input: &mut I) -> Result<(), Error>where
I: Input,
fn encoded_fixed_size() -> Option<usize>
fn encoded_fixed_size() -> Option<usize>
sourceimpl<'de> Deserialize<'de> for Perbill
impl<'de> Deserialize<'de> for Perbill
sourcefn 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>,
sourceimpl Encode for Perbill
impl Encode for Perbill
sourcefn encode_to<__CodecOutputEdqy: Output + ?Sized>(
&self,
__codec_dest_edqy: &mut __CodecOutputEdqy
)
fn encode_to<__CodecOutputEdqy: Output + ?Sized>(
&self,
__codec_dest_edqy: &mut __CodecOutputEdqy
)
sourcefn using_encoded<R, F: FnOnce(&[u8]) -> R>(&self, f: F) -> R
fn using_encoded<R, F: FnOnce(&[u8]) -> R>(&self, f: F) -> R
fn encoded_size(&self) -> usize
fn encoded_size(&self) -> usize
sourceimpl MaxEncodedLen for Perbill
impl MaxEncodedLen for Perbill
sourcefn max_encoded_len() -> usize
fn max_encoded_len() -> usize
sourceimpl<N> Mul<N> for Perbillwhere
N: Clone + UniqueSaturatedInto<u32> + Rem<N, Output = N> + Div<N, Output = N> + Mul<N, Output = N> + Add<N, Output = N> + Unsigned,
u32: Into<N>,
impl<N> Mul<N> for Perbillwhere
N: Clone + UniqueSaturatedInto<u32> + Rem<N, Output = N> + Div<N, Output = N> + Mul<N, Output = N> + Add<N, Output = N> + Unsigned,
u32: Into<N>,
Non-overflow multiplication.
This is tailored to be used with a balance type.
sourceimpl Ord for Perbill
impl Ord for Perbill
1.21.0 · sourcefn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
1.21.0 · sourcefn min(self, other: Self) -> Selfwhere
Self: Sized,
fn min(self, other: Self) -> Selfwhere
Self: Sized,
1.50.0 · sourcefn clamp(self, min: Self, max: Self) -> Selfwhere
Self: Sized + PartialOrd<Self>,
fn clamp(self, min: Self, max: Self) -> Selfwhere
Self: Sized + PartialOrd<Self>,
sourceimpl PartialOrd<Perbill> for Perbill
impl PartialOrd<Perbill> for Perbill
sourcefn partial_cmp(&self, other: &Perbill) -> Option<Ordering>
fn partial_cmp(&self, other: &Perbill) -> Option<Ordering>
1.0.0 · sourcefn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read moresourceimpl PerThing for Perbill
impl PerThing for Perbill
sourcefn deconstruct(self) -> Self::Inner
fn deconstruct(self) -> Self::Inner
Consume self and return the number of parts per thing.
sourcefn from_parts(parts: Self::Inner) -> Self
fn from_parts(parts: Self::Inner) -> Self
Build this type from a number of parts per thing.
sourcefn from_float(x: f64) -> Self
fn from_float(x: f64) -> Self
NOTE: saturate to 0 or 1 if x is beyond [0, 1]
type Upper = u64
type Upper = u64
Self::Inner
, used to avoid overflow in some computations.
It must be able to compute ACCURACY^2
. Read moresourceconst ACCURACY: Self::Inner = {transmute(0x3b9aca00): <per_things::Perbill as per_things::PerThing>::Inner}
const ACCURACY: Self::Inner = {transmute(0x3b9aca00): <per_things::Perbill as per_things::PerThing>::Inner}
sourcefn from_rational_with_rounding<N>(p: N, q: N, r: Rounding) -> Result<Self, ()>where
N: Clone + Ord + TryInto<Self::Inner> + TryInto<Self::Upper> + Div<N, Output = N> + Rem<N, Output = N> + Add<N, Output = N> + AddAssign<N> + Unsigned + Zero + One,
Self::Inner: Into<N>,
fn from_rational_with_rounding<N>(p: N, q: N, r: Rounding) -> Result<Self, ()>where
N: Clone + Ord + TryInto<Self::Inner> + TryInto<Self::Upper> + Div<N, Output = N> + Rem<N, Output = N> + Add<N, Output = N> + AddAssign<N> + Unsigned + Zero + One,
Self::Inner: Into<N>,
p/q
into a per-thing fraction. Read moresourcefn less_epsilon(self) -> Self
fn less_epsilon(self) -> Self
self
or self
if it is already zero.sourcefn try_less_epsilon(self) -> Result<Self, Self>
fn try_less_epsilon(self) -> Result<Self, Self>
self
or an error with the same value if self
is already
zero. Read moresourcefn plus_epsilon(self) -> Self
fn plus_epsilon(self) -> Self
self
or self
if it is already one.sourcefn try_plus_epsilon(self) -> Result<Self, Self>
fn try_plus_epsilon(self) -> Result<Self, Self>
self
or an error with the same value if self
is already
one. Read moresourcefn from_percent(x: Self::Inner) -> Self
fn from_percent(x: Self::Inner) -> Self
Self::from_parts(x * Self::ACCURACY / 100)
but more accurate and can cope with potential type overflows. Read moresourcefn left_from_one(self) -> Self
fn left_from_one(self) -> Self
self
is saturating-subtracted from Self::one()
.sourcefn mul_floor<N>(self, b: N) -> Nwhere
N: MultiplyArg + UniqueSaturatedInto<Self::Inner>,
Self::Inner: Into<N>,
fn mul_floor<N>(self, b: N) -> Nwhere
N: MultiplyArg + UniqueSaturatedInto<Self::Inner>,
Self::Inner: Into<N>,
Mul
rounds to the
nearest whole number. Read moresourcefn mul_ceil<N>(self, b: N) -> Nwhere
N: MultiplyArg + UniqueSaturatedInto<Self::Inner>,
Self::Inner: Into<N>,
fn mul_ceil<N>(self, b: N) -> Nwhere
N: MultiplyArg + UniqueSaturatedInto<Self::Inner>,
Self::Inner: Into<N>,
Mul
rounds to the nearest whole number. Read moresourcefn saturating_reciprocal_mul<N>(self, b: N) -> Nwhere
N: ReciprocalArg + UniqueSaturatedInto<Self::Inner>,
Self::Inner: Into<N>,
fn saturating_reciprocal_mul<N>(self, b: N) -> Nwhere
N: ReciprocalArg + UniqueSaturatedInto<Self::Inner>,
Self::Inner: Into<N>,
self
. The result is rounded to the
nearest whole number and saturates at the numeric bounds instead of overflowing. Read moresourcefn saturating_reciprocal_mul_floor<N>(self, b: N) -> Nwhere
N: ReciprocalArg + UniqueSaturatedInto<Self::Inner>,
Self::Inner: Into<N>,
fn saturating_reciprocal_mul_floor<N>(self, b: N) -> Nwhere
N: ReciprocalArg + UniqueSaturatedInto<Self::Inner>,
Self::Inner: Into<N>,
self
. The result is rounded down to the
nearest whole number and saturates at the numeric bounds instead of overflowing. Read moresourcefn saturating_reciprocal_mul_ceil<N>(self, b: N) -> Nwhere
N: ReciprocalArg + UniqueSaturatedInto<Self::Inner>,
Self::Inner: Into<N>,
fn saturating_reciprocal_mul_ceil<N>(self, b: N) -> Nwhere
N: ReciprocalArg + UniqueSaturatedInto<Self::Inner>,
Self::Inner: Into<N>,
self
. The result is rounded up to the
nearest whole number and saturates at the numeric bounds instead of overflowing. Read moresourcefn from_rational<N>(p: N, q: N) -> Selfwhere
N: RationalArg + TryInto<Self::Inner> + TryInto<Self::Upper>,
Self::Inner: Into<N>,
fn from_rational<N>(p: N, q: N) -> Selfwhere
N: RationalArg + TryInto<Self::Inner> + TryInto<Self::Upper>,
Self::Inner: Into<N>,
p/q
into a per-thing fraction. This will never overflow. Read moresourcefn from_rational_approximation<N>(p: N, q: N) -> Selfwhere
N: RationalArg + TryInto<Self::Inner> + TryInto<Self::Upper>,
Self::Inner: Into<N>,
fn from_rational_approximation<N>(p: N, q: N) -> Selfwhere
N: RationalArg + TryInto<Self::Inner> + TryInto<Self::Upper>,
Self::Inner: Into<N>,
Self::from_rational
.sourceimpl Saturating for Perbill
impl Saturating for Perbill
sourcefn saturating_add(self, rhs: Self) -> Self
fn saturating_add(self, rhs: Self) -> Self
Saturating addition. Compute self + rhs
, saturating at the numeric bounds instead of
overflowing. This operation is lossless if it does not saturate.
sourcefn saturating_sub(self, rhs: Self) -> Self
fn saturating_sub(self, rhs: Self) -> Self
Saturating subtraction. Compute self - rhs
, saturating at the numeric bounds instead of
overflowing. This operation is lossless if it does not saturate.
sourcefn saturating_mul(self, rhs: Self) -> Self
fn saturating_mul(self, rhs: Self) -> Self
Saturating multiply. Compute self * rhs
, saturating at the numeric bounds instead of
overflowing. This operation is lossy.
sourcefn saturating_pow(self, exp: usize) -> Self
fn saturating_pow(self, exp: usize) -> Self
Saturating exponentiation. Computes self.pow(exp)
, saturating at the numeric
bounds instead of overflowing. This operation is lossy.
sourcefn saturating_inc(&mut self)where
Self: One,
fn saturating_inc(&mut self)where
Self: One,
sourcefn saturating_dec(&mut self)where
Self: One,
fn saturating_dec(&mut self)where
Self: One,
sourcefn saturating_accrue(&mut self, amount: Self)where
Self: One,
fn saturating_accrue(&mut self, amount: Self)where
Self: One,
amount
, saturating.sourcefn saturating_reduce(&mut self, amount: Self)where
Self: One,
fn saturating_reduce(&mut self, amount: Self)where
Self: One,
amount
, saturating at zero.sourceimpl SaturatingAdd for Perbill
impl SaturatingAdd for Perbill
sourcefn saturating_add(&self, v: &Self) -> Self
fn saturating_add(&self, v: &Self) -> Self
self + other
, saturating at the relevant high or low boundary of
the type. Read moresourceimpl SaturatingSub for Perbill
impl SaturatingSub for Perbill
sourcefn saturating_sub(&self, v: &Self) -> Self
fn saturating_sub(&self, v: &Self) -> Self
self - other
, saturating at the relevant high or low boundary of
the type. Read moreimpl Copy for Perbill
impl EncodeLike<Perbill> for Perbill
impl Eq for Perbill
impl StructuralEq for Perbill
impl StructuralPartialEq for Perbill
Auto Trait Implementations
impl RefUnwindSafe for Perbill
impl Send for Perbill
impl Sync for Perbill
impl Unpin for Perbill
impl UnwindSafe for Perbill
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<T> DecodeAll for Twhere
T: Decode,
impl<T> DecodeAll for Twhere
T: Decode,
fn decode_all(input: &mut &[u8]) -> Result<T, Error>
fn decode_all(input: &mut &[u8]) -> Result<T, Error>
Self
and consume all of the given input data. Read moreimpl<T> DecodeLimit for Twhere
T: Decode,
impl<T> DecodeLimit for Twhere
T: Decode,
fn decode_all_with_depth_limit(limit: u32, input: &mut &[u8]) -> Result<T, Error>
fn decode_all_with_depth_limit(limit: u32, input: &mut &[u8]) -> Result<T, Error>
Self
and consume all of the given input data. Read morefn decode_with_depth_limit<I>(limit: u32, input: &mut I) -> Result<T, Error>where
I: Input,
fn decode_with_depth_limit<I>(limit: u32, input: &mut I) -> Result<T, Error>where
I: Input,
Self
with the given maximum recursion depth and advance input
by the number of
bytes consumed. Read moreimpl<T> HasCompact for Twhere
T: 'static,
Compact<T>: for<'a> EncodeAsRef<'a, T> + Decode + From<T> + Into<T>,
impl<T> HasCompact for Twhere
T: 'static,
Compact<T>: for<'a> EncodeAsRef<'a, T> + Decode + From<T> + Into<T>,
type Type = Compact<T>
type Type = Compact<T>
impl<T> KeyedVec for Twhere
T: Codec,
impl<T> KeyedVec for Twhere
T: Codec,
fn to_keyed_vec(&self, prepend_key: &[u8]) -> Vec<u8, Global>
fn to_keyed_vec(&self, prepend_key: &[u8]) -> Vec<u8, Global>
Self
prepended by given slice.sourceimpl<T> LowerBounded for Twhere
T: Bounded,
impl<T> LowerBounded for Twhere
T: Bounded,
sourceimpl<T> SaturatedConversion for T
impl<T> SaturatedConversion for T
sourcefn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
sourcefn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
T
. Read moresourceimpl<T> ThresholdOrd<T> for Twhere
T: Ord + PartialOrd<T> + Copy + Clone + Zero + Saturating,
impl<T> ThresholdOrd<T> for Twhere
T: Ord + PartialOrd<T> + Copy + Clone + Zero + Saturating,
sourceimpl<T, S> UniqueSaturatedFrom<T> for Swhere
S: TryFrom<T> + Bounded,
impl<T, S> UniqueSaturatedFrom<T> for Swhere
S: TryFrom<T> + Bounded,
sourcefn unique_saturated_from(t: T) -> S
fn unique_saturated_from(t: T) -> S
T
into an equivalent instance of Self
.sourceimpl<T, S> UniqueSaturatedInto<T> for Swhere
T: Bounded,
S: TryInto<T>,
impl<T, S> UniqueSaturatedInto<T> for Swhere
T: Bounded,
S: TryInto<T>,
sourcefn unique_saturated_into(self) -> T
fn unique_saturated_into(self) -> T
T
.