Crates.io (latest) Docs.rs Rust Version

# near-token near-token is crate for work with [tokens](https://docs.near.org/concepts/basics/tokens) in near-protocol. The crate includes NearToken type and constructors for converting data as NearToken and as u128 type values. ## Examples ### Basic Add near-token to your dependencies: ```bash cargo add near-token ``` Here is the basic usage of near-token crate: ```rust 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) ); } ``` ### serde support In order to use NearToken in `serde`-serializable structs, enable `serde` feature: ```bash cargo add near-token --features serde ``` Here is the basic usage of near-token crate with serde: ```rust // 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"}"# ); } ``` ### borsh support In order to use NearToken in `borsh`-serializable structs, enable `borsh` feature: ```bash cargo add near-token --features borsh ``` Here is the basic usage of near-token crate with borsh: ```rust 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] ); } ``` ## NearToken information NEAR is used to price computation and storage on the NEAR infrastructure. The network charges transaction fees in NEAR to process changes and transactions. ### License This project is licensed under the [MIT license] and [Apache-2.0 license]. [MIT license]: https://github.com/near/near-token/blob/main/LICENSE-MIT [Apache-2.0 license]: https://github.com/near/near-token/blob/main/LICENSE-APACHE