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
21KB
367 行
XVII
...发音方式随意,包括 "十七"。
此库提供罗马数字的解析和格式化。根据我(可能极其可疑)的基准测试,这是在 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(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
由您选择。
贡献
除非您明确说明,否则根据Apache-2.0许可证定义,您有意提交以包含在本工作中的任何贡献,将按照上述方式双重许可,不附加任何额外的条款或条件。