pub struct NearToken { /* private fields */ }
Expand description
A wrapper struct for u128
that represents tokens. And provides helpful methods to convert with a proper precision.
Implementations§
Source§impl NearToken
impl NearToken
Sourcepub const fn from_yoctonear(inner: u128) -> NearToken
pub const fn from_yoctonear(inner: u128) -> NearToken
from_yoctonear
is a function that takes value by a number of yocto-near.
§Examples
use near_token::NearToken;
assert_eq!( NearToken::from_yoctonear(10u128.pow(21)), NearToken::from_millinear(1))
Sourcepub const fn from_millinear(inner: u128) -> NearToken
pub const fn from_millinear(inner: u128) -> NearToken
from_millinear
is a function that takes value by a number of mili-near and converts it to an equivalent to the yocto-near.
§Examples
use near_token::NearToken;
assert_eq!(NearToken::from_millinear(1), NearToken::from_yoctonear(10u128.pow(21)))
Sourcepub const fn from_near(inner: u128) -> NearToken
pub const fn from_near(inner: u128) -> NearToken
from_near
is a function that takes value by a number of near and converts it to an equivalent to the yocto-near.
§Examples
use near_token::NearToken;
assert_eq!(NearToken::from_near(1), NearToken::from_yoctonear(10u128.pow(24)))
Sourcepub const fn as_near(&self) -> u128
pub const fn as_near(&self) -> u128
as_near
is a function that converts number of yocto-near to an equivalent to the near.
§Examples
use near_token::NearToken;
assert_eq!(NearToken::from_yoctonear(10u128.pow(24)).as_near(), 1)
Sourcepub const fn as_millinear(&self) -> u128
pub const fn as_millinear(&self) -> u128
as_millinear
is a function that converts number of yocto-near to an equivalent to the mili-near.
§Examples
use near_token::NearToken;
assert_eq!(NearToken::from_yoctonear(10u128.pow(21)).as_millinear(), 1)
Sourcepub const fn as_yoctonear(&self) -> u128
pub const fn as_yoctonear(&self) -> u128
as_yoctonear
is a function that shows a number of yocto-near.
§Examples
use near_token::NearToken;
assert_eq!(NearToken::from_yoctonear(10).as_yoctonear(), 10)
Sourcepub const fn is_zero(&self) -> bool
pub const fn is_zero(&self) -> bool
is_zero
is a boolian function that checks NearToken
if a NearToken
inner is zero, returns true.
§Examples
use near_token::NearToken;
assert_eq!(NearToken::from_yoctonear(0).is_zero(), true)
Sourcepub const fn checked_add(self, rhs: NearToken) -> Option<NearToken>
pub const fn checked_add(self, rhs: NearToken) -> Option<NearToken>
Checked integer addition. Computes self + rhs, returning None if overflow occurred.
§Examples
use near_token::NearToken;
use std::u128;
assert_eq!(NearToken::from_yoctonear(u128::MAX -2).checked_add(NearToken::from_yoctonear(2)), Some(NearToken::from_yoctonear(u128::MAX)));
assert_eq!(NearToken::from_yoctonear(u128::MAX -2).checked_add(NearToken::from_yoctonear(3)), None);
Sourcepub const fn checked_sub(self, rhs: NearToken) -> Option<NearToken>
pub const fn checked_sub(self, rhs: NearToken) -> Option<NearToken>
Checked integer subtraction. Computes self - rhs, returning None if overflow occurred.
§Examples
use near_token::NearToken;
assert_eq!(NearToken::from_yoctonear(2).checked_sub(NearToken::from_yoctonear(2)), Some(NearToken::from_yoctonear(0)));
assert_eq!(NearToken::from_yoctonear(2).checked_sub(NearToken::from_yoctonear(3)), None);
Sourcepub const fn checked_mul(self, rhs: u128) -> Option<NearToken>
pub const fn checked_mul(self, rhs: u128) -> Option<NearToken>
Checked integer multiplication. Computes self * rhs, returning None if overflow occurred.
§Examples
use near_token::NearToken;
use std::u128;
assert_eq!(NearToken::from_yoctonear(2).checked_mul(2), Some(NearToken::from_yoctonear(4)));
assert_eq!(NearToken::from_yoctonear(u128::MAX).checked_mul(2), None)
Sourcepub const fn checked_div(self, rhs: u128) -> Option<NearToken>
pub const fn checked_div(self, rhs: u128) -> Option<NearToken>
Checked integer division. Computes self / rhs, returning None if rhs == 0.
§Examples
use near_token::NearToken;
assert_eq!(NearToken::from_yoctonear(10).checked_div(2), Some(NearToken::from_yoctonear(5)));
assert_eq!(NearToken::from_yoctonear(2).checked_div(0), None);
Sourcepub const fn saturating_add(self, rhs: NearToken) -> NearToken
pub const fn saturating_add(self, rhs: NearToken) -> NearToken
Saturating integer addition. Computes self + rhs, saturating at the numeric bounds instead of overflowing.
§Examples
use near_token::NearToken;
assert_eq!(NearToken::from_yoctonear(5).saturating_add(NearToken::from_yoctonear(5)), NearToken::from_yoctonear(10));
assert_eq!(NearToken::from_yoctonear(u128::MAX).saturating_add(NearToken::from_yoctonear(1)), NearToken::from_yoctonear(u128::MAX));
Sourcepub const fn saturating_sub(self, rhs: NearToken) -> NearToken
pub const fn saturating_sub(self, rhs: NearToken) -> NearToken
Saturating integer subtraction. Computes self - rhs, saturating at the numeric bounds instead of overflowing.
§Examples
use near_token::NearToken;
assert_eq!(NearToken::from_yoctonear(5).saturating_sub(NearToken::from_yoctonear(2)), NearToken::from_yoctonear(3));
assert_eq!(NearToken::from_yoctonear(1).saturating_sub(NearToken::from_yoctonear(2)), NearToken::from_yoctonear(0));
Sourcepub const fn saturating_mul(self, rhs: u128) -> NearToken
pub const fn saturating_mul(self, rhs: u128) -> NearToken
Saturating integer multiplication. Computes self * rhs, saturating at the numeric bounds instead of overflowing.
§Examples
use near_token::NearToken;
use std::u128;
assert_eq!(NearToken::from_yoctonear(2).saturating_mul(5), NearToken::from_yoctonear(10));
assert_eq!(NearToken::from_yoctonear(u128::MAX).saturating_mul(2), NearToken::from_yoctonear(u128::MAX));
Sourcepub const fn saturating_div(self, rhs: u128) -> NearToken
pub const fn saturating_div(self, rhs: u128) -> NearToken
Saturating integer division. Computes self / rhs, saturating at the numeric bounds instead of overflowing.
§Examples
use near_token::NearToken;
assert_eq!(NearToken::from_yoctonear(10).saturating_div(2), NearToken::from_yoctonear(5));
assert_eq!(NearToken::from_yoctonear(10).saturating_div(0), NearToken::from_yoctonear(0))
Sourcepub fn exact_amount_display(&self) -> String
pub fn exact_amount_display(&self) -> String
Formats the NearToken
and displays the amount in NEAR or yoctoNEAR depending on the value.
§Examples
use near_token::NearToken;
assert_eq!(NearToken::from_yoctonear(10_u128.pow(24)).exact_amount_display(), "1 NEAR");
assert_eq!(NearToken::from_yoctonear(15 * 10_u128.pow(23)).exact_amount_display(), "1.5 NEAR");
assert_eq!(NearToken::from_yoctonear(500).exact_amount_display(), "500 yoctoNEAR");
assert_eq!(NearToken::from_yoctonear(0).exact_amount_display(), "0 NEAR");
Trait Implementations§
Source§impl BorshDeserialize for NearToken
impl BorshDeserialize for NearToken
fn deserialize_reader<__R>(reader: &mut __R) -> Result<NearToken, Error>where
__R: Read,
Source§fn deserialize(buf: &mut &[u8]) -> Result<Self, Error>
fn deserialize(buf: &mut &[u8]) -> Result<Self, Error>
Source§fn try_from_slice(v: &[u8]) -> Result<Self, Error>
fn try_from_slice(v: &[u8]) -> Result<Self, Error>
fn try_from_reader<R>(reader: &mut R) -> Result<Self, Error>where
R: Read,
Source§impl BorshSchema for NearToken
impl BorshSchema for NearToken
Source§fn declaration() -> String
fn declaration() -> String
Source§fn add_definitions_recursively(definitions: &mut BTreeMap<String, Definition>)
fn add_definitions_recursively(definitions: &mut BTreeMap<String, Definition>)
Source§impl BorshSerialize for NearToken
impl BorshSerialize for NearToken
Source§impl<'de> Deserialize<'de> for NearToken
impl<'de> Deserialize<'de> for NearToken
Source§fn deserialize<D>(
deserializer: D,
) -> Result<NearToken, <D as Deserializer<'de>>::Error>where
D: Deserializer<'de>,
fn deserialize<D>(
deserializer: D,
) -> Result<NearToken, <D as Deserializer<'de>>::Error>where
D: Deserializer<'de>,
Source§impl Display for NearToken
NearToken Display implementation rounds up the token amount to the relevant precision point.
There are 4 breakpoints:
impl Display for NearToken
NearToken Display implementation rounds up the token amount to the relevant precision point. There are 4 breakpoints:
- exactly 0 NEAR
- <0.001 NEAR
- 0.001 - 0.999 NEAR (uses 3 digits after the floating point)
-
1 NEAR (uses 2 digits after the floating point)
Source§impl JsonSchema for NearToken
impl JsonSchema for NearToken
Source§fn is_referenceable() -> bool
fn is_referenceable() -> bool
$ref
keyword. Read moreSource§fn schema_name() -> String
fn schema_name() -> String
Source§fn json_schema(gen: &mut SchemaGenerator) -> Schema
fn json_schema(gen: &mut SchemaGenerator) -> Schema
Source§impl Ord for NearToken
impl Ord for NearToken
Source§impl PartialOrd for NearToken
impl PartialOrd for NearToken
Source§impl Serialize for NearToken
impl Serialize for NearToken
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,
impl Copy for NearToken
impl Eq for NearToken
impl StructuralPartialEq for NearToken
Auto Trait Implementations§
impl Freeze for NearToken
impl RefUnwindSafe for NearToken
impl Send for NearToken
impl Sync for NearToken
impl Unpin for NearToken
impl UnwindSafe for NearToken
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<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.