2 个不稳定版本

0.2.0 2023年1月22日
0.1.0 2021年8月27日

477数学

Download history 216/week @ 2024-03-14 188/week @ 2024-03-21 222/week @ 2024-03-28 170/week @ 2024-04-04 203/week @ 2024-04-11 139/week @ 2024-04-18 97/week @ 2024-04-25 82/week @ 2024-05-02 136/week @ 2024-05-09 202/week @ 2024-05-16 116/week @ 2024-05-23 121/week @ 2024-05-30 85/week @ 2024-06-06 65/week @ 2024-06-13 197/week @ 2024-06-20 121/week @ 2024-06-27

491 每月下载量

MIT 许可证

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: 为序数实现 SerializeDeserialize

许可证

MIT

依赖项

~175KB