- ISO: Fixed symbols for BHD, ISK, NPR, UYU and alpha code for UYW.
- ISO: Added ALL, STN, UYW currencies @ObsceneGiraffe.
- Crypto: Added COMP, DAI, MKR, UNI, USDC, USDT, XTZ, ZEC
- Fix:
Exchange::get_rate
returns a lifetimeOption<ExchangeRate<'a, T>>
to prevent lifetime conflicts @RestitutorOrbis.
rusty_money now supports defining your own currencies and has a cryptocurrency module. It no longer depends on lazy_static!, is a bit faster and and simpler to use. Many breaking changes were needed to support this, so upgrade with care!
- define_currency_set! allows you to create your own custom currency modules. @jimpo
- CryptoCurrencies (Bitcoin, Ethereum) are now available in the
crypto
module. - Removed dependency on lazy_static! and made library thread safe.
Breaking Changes:
Money::new
was deprecated, please useMoney::from_minor
instead.Money::from_str()
accepts a currency referenceiso::USD
instead of string"USD"
.Money
requires lifetime and currency type annotiations.money!
macro was deprecated, please useMoney::from_str
instead.Currency::get()
was deprecated, please reference currencies directly by their module likeiso::USD
.- The old Currency module is now called
iso::Currency
. Currency::from_string
is nowiso::find
and accepts&str
instead ofString
@ObsceneGiraffe.ExchangeRate::add_or_update_rate
was deprecated, please useExchangeRate::set_rate
instead. @jimpo.
- Upgraded dependencies.
- Bugfix: Incorrect metadata for CZK, HUF, ZMK @zacharra
- Feature: Money objects can be multiplied by Decimals @sjoerdsimons
- Bugfix: from_string rejects incorrect digit separators like 1.00,00 EUR @sjoerdsimons
- Bugfix: Fixing incorrect name and code for BRL (Brazilian real) @diegooliveira
- Bugfix: Adding or subtracting different currencies now panics.
- Feature: Support all ISO currencies.
- Refactor: Most interfaces now return Result<T, MoneyError> (breaking change)
- Refactor: Money::new takes i64 minor units instead of a Decimal (breaking change)
- Refactor: Currency::find takes strs instead of strings (breaking change)
- Feature: Money objects do not round amounts unless .round() or .format!() are called. (breaking change)
- Feature: Money objects can be multiplied and divided.
- Feature: Money can be converted into different Currencies using Exchange and ExchangeRate.
- Feature: Money objects can be converted into human readable strings with more flexible structuring.
- Feature: Money objects can be rounded half up, half down or half even.
- Feature: Added 109 new ISO currencies, which can be looked up by ISO code.
- Currency::new was renamed to Currency::find (breaking change)
- Crate include and use structure was tweaked (breaking change)
- AED, BHD, EUR and INR Currencies are now supported.
- Supported currencies are printed with separators, symbols and signs. (e.g. -$2,000 USD)
- Currency numeric ISO code can be looked up with currency alpha numeric code.
- Basic Money and Currency implementation
- Serialization and Deserialization of Money.
- Benchmarking performance.
- no-std by default.