Crates.io | near-token |
lib.rs | near-token |
version | 0.3.0 |
source | src |
created_at | 2023-10-22 10:07:21.583605 |
updated_at | 2024-08-12 21:09:54.42083 |
description | a small crate to work with NEAR token values ergonomically and efficiently (NEAR Protocol) |
homepage | |
repository | https://github.com/near/near-token |
max_upload_size | |
id | 1010486 |
size | 55,614 |
near-token is crate for work with tokens in near-protocol.
The crate includes NearToken type and constructors for converting data as NearToken and as u128 type values.
Add near-token to your dependencies:
cargo add near-token
Here is the basic usage of near-token crate:
use near_token::NearToken;
fn main() {
const TEN_NEAR: NearToken = NearToken::from_near(10);
assert_eq!(TEN_NEAR.to_string(), "10.00 NEAR");
assert_eq!(TEN_NEAR.as_near(), 10);
assert_eq!(TEN_NEAR.as_millinear(), 10000);
assert_eq!(TEN_NEAR.as_yoctonear(), 10000000000000000000000000);
let input_str = "0.123456 NEAR";
let input_near: NearToken = input_str.parse().unwrap();
assert_eq!(
input_near,
NearToken::from_yoctonear(123456000000000000000000)
);
}
In order to use NearToken in serde
-serializable structs, enable serde
feature:
cargo add near-token --features serde
Here is the basic usage of near-token crate with serde:
// When `serde` feature is enabled, NearToken can be used in serde-serializable structs.
// NearToken will be serialized to a token-precision u128 value encoded as string.
#[derive(serde::Serialize)]
struct TransferDetails {
amount: NearToken,
}
fn main() {
const TEN_NEAR: NearToken = NearToken::from_near(10);
let details = TransferDetails { amount: TEN_NEAR };
assert_eq!(
serde_json::to_string(&details).unwrap(),
r#"{"amount":"10000000000000000000000000"}"#
);
}
In order to use NearToken in borsh
-serializable structs, enable borsh
feature:
cargo add near-token --features borsh
Here is the basic usage of near-token crate with borsh:
use borsh::{to_vec, BorshSerialize};
use near_token::NearToken;
#[derive(BorshSerialize)]
struct TransferDetails {
amount: NearToken,
}
fn main() {
const TEN_NEAR: NearToken = NearToken::from_near(10);
let details = TransferDetails { amount: TEN_NEAR };
assert_eq!(
to_vec(&details).unwrap(),
vec![0, 0, 0, 74, 72, 1, 20, 22, 149, 69, 8, 0, 0, 0, 0, 0]
);
}
NEAR is used to price computation and storage on the NEAR infrastructure. The network charges transaction fees in NEAR to process changes and transactions.
This project is licensed under the MIT license and Apache-2.0 license.