currency-layer-rs is a client for CurrencyLayer's free APIs

Example Usage

Live Rates

See examples/live_rates.rs.

```rust extern crate currency_layer; extern crate tokio;

use currencylayer::Client; use rustymoney::{iso, Money};

[tokio::main]

async fn main() { let client = Client::new("APIKEY"); let result = client .getlive_rates( // Currencies to get rates for vec!["GBP", "USD", "CAD"], ) .await .unwrap();

// The free API only returns rates in dollars.
// See: https://currencylayer.com/documentation, section
// "Source Currency Switching".
let original_usd = Money::from_major(100, iso::USD);
let exchange_rate_usd_to_gbp = result.quotes.get("GBP").unwrap();
let converted_to_gbp = exchange_rate_usd_to_gbp
    .convert(original_usd.clone())
    .unwrap();
// At 2021-02-16 02:12:06 UTC: $100 → £71.74
println!(
    "At {}: {} → {}",
    result.timestamp, &original_usd, &converted_to_gbp
);

} ```

Historical Rates

See examples/historical_rates.rs.

```rust extern crate currency_layer; extern crate tokio;

use currencylayer::Client; use rustymoney::{iso, Money};

[tokio::main]

async fn main() { let client = Client::new("APIKEY"); let result = client .gethistorical_rates( // Currencies to get rates for vec!["GBP", "USD", "CAD"], // Date as a tuple 3 in the format YYYY, MM, DD (2015, 2, 23), ) .await .unwrap();

// The free API only returns rates in dollars.
// See: https://currencylayer.com/documentation, section
// "Source Currency Switching".
let original_usd = Money::from_major(100, iso::USD);
let exchange_rate_usd_to_gbp = result.quotes.get("GBP").unwrap();
let converted_to_gbp = exchange_rate_usd_to_gbp
    .convert(original_usd.clone())
    .unwrap();
// At 2015-02-23 23:59:59 UTC: $100 → £64.70
println!(
    "At {}: {} → {}",
    result.timestamp, &original_usd, &converted_to_gbp
);

} ```