#money #conversion #comparison #mutation #monetary #js #value

dinero

Dinero lets you express monetary values. You can perform mutations, conversions, comparisons, format them extensively, and overall make money manipulation in your application easier and safer.

5 releases

0.0.11 Nov 28, 2022
0.0.10 Oct 23, 2022

#100 in Finance

42 downloads per month
Used in dinero-exchange-cli

MIT license

99KB
3K SLoC

Dinero-rust

Stability: alpha Crates.io Crates.io Crates.io

Dinero is a Rust port of Dinero.js
Dinero lets you create, calculate, and format money in Rust.
docs.rs/dinero


📦 Install

$ cargo add dinero

⚡️ Quick start

Dinero objects are minimal. The API is heavily inspired by dinero.js unless there is a more suitable Rust way to implement things.

use dinero::{api::add, currencies::USD, format::to_unit, Dinero};

// Create a Dinero object of value 8.5 USD (the default scale for USD is 2)
let d1 = Dinero::new(850, USD, None);
// Create a Dinero object of value 5 USD with a custom scale 3
let d2 = Dinero::new(5000, USD, Some(3));

// Add the 2 Dineros, the value is stored in the result Dinero without modifying d1 and d2
let result = add(&d1, &d2); // Similar API as Dinero.js

let result = d1 + d2; // Or you can use the standard operators

match result {
  Ok(value) => println!("{} USD", to_unit(value, None, None)), // 13.5 USD
  Err(_) => println!("Error adding d1+d2"),
}

🦀 Disclaimer

I'm using this project to learn about Rust. And I'm working my way through the language and the ecosystem.

Consider the current version of Dinero unstable. There will definitely be breaking changes.

📜 License

MIT

No runtime deps