20 releases (12 stable)
2.2.1 | Aug 3, 2024 |
---|---|
2.0.4 | Apr 25, 2024 |
2.0.3 | Feb 26, 2024 |
1.0.2 | Jan 5, 2024 |
0.2.1 | Dec 8, 2023 |
#139 in Math
982 downloads per month
37KB
983 lines
null-kane
This is a Rust crate designed for currency manipulation. It provides an interface via a trait for implementing localization methods. The trait enables retrieval of the currency separator, thousand separator, and currency symbol.
Features
Localization Methods
get_separator
: Retrieves the separator used for the currency.get_thousand_separator
: Retrieves the thousand separator used for the currency.get_currency_symbol
: Retrieves the currency symbol.
Arithmetic Operations
The crate implements arithmetic operations for the following types:
- Addition, multiplication, and division among currencies.
- Addition, multiplication, and division between currencies and
usize
. - Addition, multiplication, and division between currencies and
f32
. - Addition, multiplication, and division between currencies and
f64
.
Constructors
From
implementations for creating instances from f32
and f64
.
Example
use null_kane::{Currency, CurrencyLocale};
#[derive(Clone, Default, PartialEq, Eq)]
enum MyLocalization {
#[default]
Euro
}
impl CurrencyLocale for MyLocalization {
fn separator(&self) -> char {
// Implementation of the separator for Euro
','
}
fn thousand_separator(&self) -> char {
// Implementation of the thousand separator for Euro
'.'
}
fn currency_symbol(&self) -> &'static str {
// Implementation of the currency symbol for Euro
"€"
}
}
fn main() {
let euro_currency = MyLocalization::default();
let amount_one = Currency::from(50.25_f32).with_locale(euro_currency.clone());
let amount_two = Currency::from(30.75_f64).with_locale(euro_currency);
let sum = amount_one + amount_two;
let product = amount_one * 2.0;
let division = amount_two / 3.0;
println!("Sum: {}", sum);
println!("Product: {}", product);
println!("Division: {}", division);
}
TODO
- implement a good solution for failing operations, for example if currency localizations don't match
- consider using num trait
License
This project is licensed under the MIT License. See the LICENSE file for details.
Dependencies
~160KB