#currency #fixed #precision

商品

一个用于表示商品/货币,以及它们之间的汇率/转换的库

14个不稳定版本 (3个重大更改)

0.4.0 2020年6月17日
0.3.7 2020年6月17日
0.3.5 2020年5月10日
0.3.4 2020年4月28日
0.1.1 2020年3月2日

金融类别中排名#210


doublecount中使用

MIT许可证

47KB
662 代码行

Commodity crates.io徽章 docs.rs徽章 许可证徽章 github action徽章

一个用于在Rust中表示商品/货币,以及它们之间的汇率/转换的库。这些值由rust_decimal库支持。

变更日志

可选功能

以下功能可以启用以提供额外功能

  • serde-support
    • 启用通过serde进行序列化/反序列化支持

示例

use commodity::{Commodity, CommodityType, CommodityTypeID};
use rust_decimal::Decimal;
use std::str::FromStr;

// Create a commodity type from a currency's iso4317 three character code.
// The CommodityType stores information associated with that currency,
// such as the full name ("United States dollar" for this one).
let usd = CommodityType::from_currency_alpha3("USD").unwrap();

// Create a commodity with a value of "2.02 USD"
let commodity1 = Commodity::new(Decimal::from_str("2.02").unwrap(), &usd);

// Create commodities using the `from_str` method
let commodity2 = Commodity::from_str("24.00 USD").unwrap();

// Create commodity using a CommodityTypeID
let nzd_code = CommodityTypeID::from_str("NZD").unwrap();
let commodity3 = Commodity::new(Decimal::from_str("24.00").unwrap(), nzd_code);

// Add two compatible (same currency) commodities, the result has
// the same currency (in this case, "USD").
let commodity4 = commodity1.add(&commodity2).unwrap();

// Try to subtract two incompatible commodities
let result = commodity3.sub(&commodity2);
assert!(result.is_err());

依赖项

~1.7–2.5MB
~47K SLoC