cmc

Crates.iocmc
lib.rscmc
version0.4.4
sourcesrc
created_at2022-06-02 01:01:57.007042
updated_at2024-03-11 10:14:44.330381
descriptionRust Library for the CoinMarketCap API
homepage
repositoryhttps://github.com/dzhegash/cmc
max_upload_size
id598603
size137,930
(Dzhegash)

documentation

https://docs.rs/crate/cmc/

README

cmc

Crates.io docs.rs MIT licensed Apache-2.0 licensed

Unofficial Rust Library for the CoinMarketCap API

Usage

Get your API key here


CoinMarketCap ID Map

NOTE: CoinMarketCap recommend utilizing CMC ID instead of cryptocurrency symbols to securely identify cryptocurrencies with other endpoints and in your own application logic.

use cmc::{Cmc, Sort};

let cmc = Cmc::new("<API KEY>");

match cmc.id_map(1, 50, Sort::CmcRank) {
    Ok(map) => println!("{}", map),
    Err(err) => println!("{}", err),
}

Price cryptocurrency

use cmc::Cmc;

let cmc = Cmc::new("<API KEY>");

match cmc.price("BTC") {
    Ok(price) => println!("Price: {}", price),
    Err(err) => println!("Error: {}", err),
}

Price with custom settings

use cmc::{CmcBuilder, Pass};

let cmc = CmcBuilder::new("<API KEY>")
    .pass(Pass::Id)
    .convert("EUR")
    .build();

match cmc.price("1027") { // 1027 is Ethereum id.
    Ok(price) => println!("Price: {}", price), // In Euro instead default USD
    Err(err) => println!("Error: {}", err),
}

Price conversion

use cmc::Cmc;

let cmc = Cmc::new("<API KEY>");

// 2.5 BTC in EUR (using symbols)
match cmc.price_conversion(2.5, "BTC", None, "EUR") {
    Ok(price) => println!("Total price: {}", price),
    Err(err) => println!("Error: {}", err),
}

// 1.6 ETH in XMR (using id's)
match cmc.price_conversion_id(1.6, "1027", None, "328") {
    Ok(price) => println!("Total price: {}", price),
    Err(err) => println!("Error: {}", err),
}

Exchange ID Map

use cmc::{Cmc, ListingStatusExchange, SortExchange};

let cmc = Cmc::new("<API KEY>");

match cmc.exchange_id_map(ListingStatusExchange::Active, 1, 10, SortExchange::Id, None) {
    Ok(map) => println!("{}", map),
    Err(err) => println!("{}", err),
}

Crate Features

This crate supports default features:

  • cryptocurrency

  • exchange

  • fiat

  • global_metrics

  • key

  • tools

Disable all functions except the necessary ones:

[dependencies]
cmc = { version = "0.4.0", default-features = false, features = ["cryptocurrency"] }

Async

Asynchronous versions of functions are available through enabling the async feature:

[dependencies]
cmc = { version = "0.4.0", features = ["async"] }

And then the code:

#[tokio::main]
async fn main() {
    use cmc::async_api::Cmc;
    
    let cmc = Cmc::new("<API KEY>");
    
    match cmc.price("BTC").await {
        Ok(price) => println!("Price: {}", price),
        Err(err) => println!("Error: {}", err),
    }
}

License

Licensed under either of

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Commit count: 246

cargo fmt