#货币 #分隔符 #本地化 #符号 #特质 #接口 #逻辑

null-kane

可选添加自定义货币本地化逻辑的货币 crate

20 个版本 (12 个稳定版)

2.2.1 2024 年 8 月 3 日
2.0.4 2024 年 4 月 25 日
2.0.3 2024 年 2 月 26 日
1.0.2 2024 年 1 月 5 日
0.2.1 2023 年 12 月 8 日

#267 in Rust 模式

Download history 85/week @ 2024-04-27 32/week @ 2024-05-04 24/week @ 2024-05-11 43/week @ 2024-05-18 1/week @ 2024-05-25 6/week @ 2024-06-01 6/week @ 2024-06-08 14/week @ 2024-06-15 3/week @ 2024-06-22 383/week @ 2024-08-03 9/week @ 2024-08-10

每月 392 次下载

自定义许可证

37KB
983

null-kane

这是一个用于货币操作的 Rust crate。它通过一个特质提供了一个接口,用于实现本地化方法。该特质允许检索货币分隔符、千位分隔符和货币符号。

特性

本地化方法

  • get_separator:检索货币使用的分隔符。
  • get_thousand_separator:检索货币使用的千位分隔符。
  • get_currency_symbol:检索货币符号。

算术操作

该 crate 实现了对以下类型的算术操作

  • 货币之间的加法、乘法和除法。
  • 货币与 usize 之间的加法、乘法和除法。
  • 货币与 f32 之间的加法、乘法和除法。
  • 货币与 f64 之间的加法、乘法和除法。

构造函数

From 实现从 f32f64 创建实例。

示例

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

  • 实现一个良好的失败操作解决方案,例如如果货币本地化不匹配
  • 考虑使用 num 特质

许可证

该项目受 MIT 许可证的许可。有关详细信息,请参阅 LICENSE 文件。

依赖关系

~175KB