2 个不稳定版本
0.2.0 | 2023年1月22日 |
---|---|
0.1.0 | 2021年8月27日 |
477 在 数学
491 每月下载量
15KB
223 行
num-ordinal
: Rust 中的序数类型
序数(第一、第二、第三、...)通常表示为基于0或基于1的整数。在英语和大多数其他自然语言中,它们表示为基于1的数字:第一 = 1st,第二 = 2nd,第三 = 3rd 等等。然而,大多数编程语言是零基的,即获取数组或列表中的第一个元素时,索引为0。这对于Rust也是如此。
用法
为了使序数的使用更加明确和减少错误,此库提供了一种序数类型,可以在转换为/从基数数转换时指定它是基于0还是基于1
use num_ordinal::{Ordinal, Osize};
// Osize is an ordinal usize
let o = Osize::from0(3);
assert_eq!(&o.to_string(), "4th");
let o = Osize::from1(3);
assert_eq!(&o.to_string(), "third");
还有两个便利函数,用于在返回类型可以推断时创建序数
use num_ordinal::{Osize, ordinal0, ordinal1};
// Osize is an ordinal usize
let o: Osize = ordinal0(3);
assert_eq!(&o.to_string(), "4th");
let o: Osize = ordinal1(3);
assert_eq!(&o.to_string(), "third");
以及 一个宏
use num_ordinal::{O32, ordinal};
// type is inferred:
let o: O32 = ordinal!(4-th);
// type can also be specified:
let o = ordinal!(4-th O32);
实现的特质
序数实现了一系列特质,因此它们可以进行比较、散列、复制和格式化。您还可以从序数中添加或减去一个整数
use num_ordinal::ordinal;
assert_eq!(ordinal!(5-th O32) - 3, ordinal!(second O32));
从序数中减去一个序数会产生一个整数
use num_ordinal::ordinal;
assert_eq!(ordinal!(5-th O32) - ordinal!(second O32), 3);
默认值是 first。
功能
serde
: 为序数实现Serialize
和Deserialize
许可证
MIT
依赖项
~175KB