slip44/
lib.rs

1//! Mapping between [SLIP-0044](https://github.com/satoshilabs/slips/blob/master/slip-0044.md)
2//! coin types and the associated metadata.
3//!
4//! Parse IDs, coin names and symbols into pre-defined [`Coin`] and [`Symbol`] enums
5//! and convert one into another.
6//! ```
7//! use std::{convert::TryFrom, str::FromStr};
8//! use slip44::{Coin, Symbol};
9//!
10//! const BITCOIN_ID: u32 = Coin::Bitcoin.id(); // Coin IDs are constant
11//!
12//! fn main() {
13//!     assert_eq!(BITCOIN_ID, 0);
14//!     assert_eq!(Coin::Bitcoin.id(), 0);
15//!     assert_eq!(Coin::Bitcoin.ids(), vec![0]); // Coin may have multiple IDs (e.g. Credits)
16//!     assert_eq!(Coin::Bitcoin.name(), "Bitcoin");
17//!     assert_eq!(Coin::Bitcoin.link(), Some("https://bitcoin.org/".to_string()));
18//!     assert_eq!(Coin::Bitcoin.to_string(), "Bitcoin");
19//!     
20//!     assert_eq!(Coin::try_from(0), Ok(Coin::Bitcoin)); // Try to get Coin from its ID
21//!     assert_eq!(Coin::from_str("Bitcoin"), Ok(Coin::Bitcoin));
22//!     assert_eq!(Coin::from(Symbol::BTC), Coin::Bitcoin); // Get Coin from its Symbol (can't fail, all symbols have associated coins)
23//!
24//!     assert_eq!(Symbol::BTC.to_string(), "BTC");
25//!     
26//!     assert_eq!(Symbol::try_from(0), Ok(Symbol::BTC)); // Try to get coin Symbol from its ID
27//!     assert_eq!(Symbol::try_from(Coin::Bitcoin), Ok(Symbol::BTC)); // Try to convert Coin to Symbol (can fail if no Symbol for Coin is specified)
28//!     assert_eq!(Symbol::from_str("BTC"), Ok(Symbol::BTC));
29//! }
30//! ```
31mod coin;
32mod coins_macro;
33
34pub use coin::*;