#numeral #roman #seventeen

无需 std xvii

解析或打印罗马数字的库

12 个版本

0.4.1 2020年10月12日
0.3.4 2018年8月16日
0.3.3 2018年5月11日
0.2.3 2018年2月12日
0.1.1 2017年3月15日

#147值格式化


用于 ruswords

MIT/Apache

21KB
367

XVII

Crates.io documentation (docs.rs) Build Status

...发音方式随意,包括 "十七"。

此库提供罗马数字的解析和格式化。根据我(可能极其可疑)的基准测试,这是在 crates.io 上可用的性能最佳的此类库(你知道的,截至 2017 年圣帕特里克节,当时我进行了测试),因此你绝对应该在你的高可用性 NAAS(数字即服务)项目中使用它。

(严肃地说,不过,请阅读许可证——没有隐含保证!)

此外,如果你有一个高可用性 NAAS 项目,你需要检查一下你的头脑。我不知道最初写这个说明时是否已经清楚,所以我现在加上这一点。

用法

解析

解析通过 Rust 的普通 FromStr 特性提供,这意味着你可以像创建任何其他数字一样创建 Roman 值——尽管错误情况稍微简单一些,因为唯一可能出现的错误是“嘿,那个字母不能放在那里”,或者“伙计,它们从 1 到 4999,仅此而已!”

let seventeen: Roman = "XVII".parse().unwrap();

格式化

有几种格式化选项。 Roman 实现 Display,这意味着它与 println!("{}") 等一样工作,但为了最大效率(别笑了!)我还提供了另外两个函数: to_lowercase()to_uppercase()。这些跳过了 Display 管道,直接进入一个新的字符串。

关于格式化,有一个关于通过 Roman::new_unchecked() 创建的 Roman 值的格式化陷阱:大于 4999 的值将简单地看起来像 MMMMMMMMMMMMMMMXIV 或类似的东西。

变更日志

  • v0.4.1 升级到 rust 版本 2018,支持无 std 使用(感谢 WaffleLapkin!),大量清理(也感谢他,真的)。
  • v0.2.2 将解析升级为使用某种奇怪的状态机,以允许数字达到通常接受的最高值 4999,或 MMMMCMXCIX,从而避免潜在的 Y4K 错误。你的千年帝国现在安全了。

许可证

在以下任一许可证下授权

由您选择。

贡献

除非您明确说明,否则根据Apache-2.0许可证定义,您有意提交以包含在本工作中的任何贡献,将按照上述方式双重许可,不附加任何额外的条款或条件。

无运行时依赖

功能