pub struct Uint128(_);
Expand description
A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.
Examples
Use from
to create instances of this and u128
to get the value out:
let a = Uint128::from(123u128);
assert_eq!(a.u128(), 123);
let b = Uint128::from(42u64);
assert_eq!(b.u128(), 42);
let c = Uint128::from(70u32);
assert_eq!(c.u128(), 70);
Implementations§
source§impl Uint128
impl Uint128
pub const MAX: Uint128 = Self(u128::MAX)
pub const MIN: Uint128 = Self(u128::MIN)
sourcepub const fn new(value: u128) -> Uint128
pub const fn new(value: u128) -> Uint128
Creates a Uint128(value).
This method is less flexible than from
but can be called in a const context.
sourcepub const fn to_be_bytes(self) -> [u8; 16]
pub const fn to_be_bytes(self) -> [u8; 16]
Returns a copy of the number as big endian bytes.
sourcepub const fn to_le_bytes(self) -> [u8; 16]
pub const fn to_le_bytes(self) -> [u8; 16]
Returns a copy of the number as little endian bytes.
pub const fn is_zero(&self) -> bool
pub fn pow(self, exp: u32) -> Uint128
sourcepub fn multiply_ratio<A, B>(&self, numerator: A, denominator: B) -> Uint128where
A: Into<u128>,
B: Into<u128>,
pub fn multiply_ratio<A, B>(&self, numerator: A, denominator: B) -> Uint128where A: Into<u128>, B: Into<u128>,
Returns self * numerator / denominator
.
Due to the nature of the integer division involved, the result is always floored. E.g. 5 * 99/100 = 4.
sourcepub fn checked_multiply_ratio<A, B>(
&self,
numerator: A,
denominator: B
) -> Result<Uint128, CheckedMultiplyRatioError>where
A: Into<u128>,
B: Into<u128>,
pub fn checked_multiply_ratio<A, B>( &self, numerator: A, denominator: B ) -> Result<Uint128, CheckedMultiplyRatioError>where A: Into<u128>, B: Into<u128>,
Returns self * numerator / denominator
.
Due to the nature of the integer division involved, the result is always floored. E.g. 5 * 99/100 = 4.
pub fn checked_add(self, other: Uint128) -> Result<Uint128, OverflowError>
pub fn checked_sub(self, other: Uint128) -> Result<Uint128, OverflowError>
pub fn checked_mul(self, other: Uint128) -> Result<Uint128, OverflowError>
pub fn checked_pow(self, exp: u32) -> Result<Uint128, OverflowError>
pub fn checked_div(self, other: Uint128) -> Result<Uint128, DivideByZeroError>
pub fn checked_div_euclid( self, other: Uint128 ) -> Result<Uint128, DivideByZeroError>
pub fn checked_rem(self, other: Uint128) -> Result<Uint128, DivideByZeroError>
pub fn wrapping_add(self, other: Uint128) -> Uint128
pub fn wrapping_sub(self, other: Uint128) -> Uint128
pub fn wrapping_mul(self, other: Uint128) -> Uint128
pub fn wrapping_pow(self, other: u32) -> Uint128
pub fn saturating_add(self, other: Uint128) -> Uint128
pub fn saturating_sub(self, other: Uint128) -> Uint128
pub fn saturating_mul(self, other: Uint128) -> Uint128
pub fn saturating_pow(self, exp: u32) -> Uint128
pub const fn abs_diff(self, other: Uint128) -> Uint128
Trait Implementations§
source§impl<'a> AddAssign<&'a Uint128> for Uint128
impl<'a> AddAssign<&'a Uint128> for Uint128
source§fn add_assign(&mut self, rhs: &'a Uint128)
fn add_assign(&mut self, rhs: &'a Uint128)
+=
operation. Read moresource§impl AddAssign<Uint128> for Uint128
impl AddAssign<Uint128> for Uint128
source§fn add_assign(&mut self, rhs: Uint128)
fn add_assign(&mut self, rhs: Uint128)
+=
operation. Read moresource§impl<'de> Deserialize<'de> for Uint128
impl<'de> Deserialize<'de> for Uint128
source§fn deserialize<D>(
deserializer: D
) -> Result<Uint128, <D as Deserializer<'de>>::Error>where
D: Deserializer<'de>,
fn deserialize<D>( deserializer: D ) -> Result<Uint128, <D as Deserializer<'de>>::Error>where D: Deserializer<'de>,
Deserialized from an integer string using base 10
source§impl<'a> DivAssign<&'a Uint128> for Uint128
impl<'a> DivAssign<&'a Uint128> for Uint128
source§fn div_assign(&mut self, rhs: &'a Uint128)
fn div_assign(&mut self, rhs: &'a Uint128)
/=
operation. Read moresource§impl DivAssign<Uint128> for Decimal
impl DivAssign<Uint128> for Decimal
source§fn div_assign(&mut self, rhs: Uint128)
fn div_assign(&mut self, rhs: Uint128)
/=
operation. Read moresource§impl DivAssign<Uint128> for Uint128
impl DivAssign<Uint128> for Uint128
source§fn div_assign(&mut self, rhs: Uint128)
fn div_assign(&mut self, rhs: Uint128)
/=
operation. Read moresource§impl FadromaDeserialize for Uint128
impl FadromaDeserialize for Uint128
source§fn from_bytes<'a>(de: &mut Deserializer<'a>) -> Result<Self>
fn from_bytes<'a>(de: &mut Deserializer<'a>) -> Result<Self>
Deserializer
.source§impl FadromaSerialize for Uint128
impl FadromaSerialize for Uint128
source§fn size_hint(&self) -> usize
fn size_hint(&self) -> usize
source§fn to_bytes(&self, ser: &mut Serializer) -> Result<()>
fn to_bytes(&self, ser: &mut Serializer) -> Result<()>
Serializer
.source§impl JsonSchema for Uint128
impl JsonSchema for Uint128
source§fn schema_name() -> String
fn schema_name() -> String
source§fn json_schema(gen: &mut SchemaGenerator) -> Schema
fn json_schema(gen: &mut SchemaGenerator) -> Schema
source§fn is_referenceable() -> bool
fn is_referenceable() -> bool
$ref
keyword. Read moresource§impl Mul<Decimal> for Uint128
impl Mul<Decimal> for Uint128
Both du and ud with d: Decimal and u: Uint128 returns an Uint128. There is no specific reason for this decision other than the initial use cases we have. If you need a Decimal result for the same calculation, use Decimal(du) or Decimal(ud).
source§impl MulAssign<&Uint128> for Uint128
impl MulAssign<&Uint128> for Uint128
source§fn mul_assign(&mut self, other: &Uint128)
fn mul_assign(&mut self, other: &Uint128)
*=
operation. Read moresource§impl MulAssign<Uint128> for Uint128
impl MulAssign<Uint128> for Uint128
source§fn mul_assign(&mut self, rhs: Uint128)
fn mul_assign(&mut self, rhs: Uint128)
*=
operation. Read moresource§impl Ord for Uint128
impl Ord for Uint128
source§impl PartialEq<&Uint128> for Uint128
impl PartialEq<&Uint128> for Uint128
source§impl PartialEq<Uint128> for &Uint128
impl PartialEq<Uint128> for &Uint128
source§impl PartialEq<Uint128> for Uint128
impl PartialEq<Uint128> for Uint128
source§impl PartialOrd<Uint128> for Uint128
impl PartialOrd<Uint128> for Uint128
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read moresource§impl RemAssign<&Uint128> for Uint128
impl RemAssign<&Uint128> for Uint128
source§fn rem_assign(&mut self, other: &Uint128)
fn rem_assign(&mut self, other: &Uint128)
%=
operation. Read moresource§impl RemAssign<Uint128> for Uint128
impl RemAssign<Uint128> for Uint128
source§fn rem_assign(&mut self, rhs: Uint128)
fn rem_assign(&mut self, rhs: Uint128)
%=
operation. Read moresource§impl Serialize for Uint128
impl Serialize for Uint128
source§fn serialize<S>(
&self,
serializer: S
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>where
S: Serializer,
fn serialize<S>( &self, serializer: S ) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>where S: Serializer,
Serializes as an integer string using base 10
source§impl<'a> ShrAssign<&'a u32> for Uint128
impl<'a> ShrAssign<&'a u32> for Uint128
source§fn shr_assign(&mut self, rhs: &'a u32)
fn shr_assign(&mut self, rhs: &'a u32)
>>=
operation. Read moresource§impl ShrAssign<u32> for Uint128
impl ShrAssign<u32> for Uint128
source§fn shr_assign(&mut self, rhs: u32)
fn shr_assign(&mut self, rhs: u32)
>>=
operation. Read moresource§impl SubAssign<&Uint128> for Uint128
impl SubAssign<&Uint128> for Uint128
source§fn sub_assign(&mut self, other: &Uint128)
fn sub_assign(&mut self, other: &Uint128)
-=
operation. Read moresource§impl SubAssign<Uint128> for Uint128
impl SubAssign<Uint128> for Uint128
source§fn sub_assign(&mut self, rhs: Uint128)
fn sub_assign(&mut self, rhs: Uint128)
-=
operation. Read more