#range #union #intersection #set #serde-derive

rangetools

扩展在 std::ops 中找到的 Rust Range 结构

5 个版本

0.1.4 2023年5月6日
0.1.3 2023年3月27日
0.1.2 2023年3月19日
0.1.1 2021年12月28日
0.1.0 2021年12月15日

#514编码

Download history 171/week @ 2024-03-13 183/week @ 2024-03-20 138/week @ 2024-03-27 161/week @ 2024-04-03 77/week @ 2024-04-10 65/week @ 2024-04-17 87/week @ 2024-04-24 82/week @ 2024-05-01 151/week @ 2024-05-08 53/week @ 2024-05-15 76/week @ 2024-05-22 90/week @ 2024-05-29 232/week @ 2024-06-05 239/week @ 2024-06-12 109/week @ 2024-06-19 71/week @ 2024-06-26

每月681次下载

MIT/Apache

350KB
11K SLoC

Rangetools

扩展 std::ops 中 Rust Range 结构的特质

用法

将此添加到您的 Cargo.toml

[dependencies]
rangetools = "0.1"

如何在您的crate中使用

use rangetools::Rangetools;

此库提供了所有 std::ops 范围类型以及此crate中引入的任何类型的新方法,以管理这些方法的输出。

let i = (0..5).intersection(3..);
assert!(i.contains(4));

let i2 = (0..5).intersection(5..10);
assert!(i2.is_empty());

尽可能的情况下(当结果是下界时),这些操作的结果类型实现 IntoIterator,以便对这些类型执行更多操作。

let u1 = (1..3).union(5..7);
assert_eq!(u1.into_iter().collect::<Vec<_>>(), vec![1, 2, 5, 6]);

let u2 = (1..3).union(10..);
assert_eq!(u2.into_iter().take(5).collect::<Vec<_>>(), vec![1, 2, 10, 11, 12]);

let c = (1..3).complement();
let i = c.into_iter(); // Compiler error! The result has no lower bound
                       // and thus cannot be iterated over.

功能

提供 serde 的功能特性,提供 serde 的 Serialize 和 Deserialize 特质的 derive 特性。

许可证

根据您的选择,在 Apache License,Version 2.0 或 MIT 许可证下许可。

依赖项

~180KB