1 个稳定版本
1.0.0 | 2023年3月9日 |
---|
1775 在 Rust 模式 中
11KB
128 行
MaxValues
包,允许您从任何序列中有效获取最大值
有关完整文档,请参阅 此处
基本用法
此包的基本用法如下
use max_values::MaxValues;
fn main() {
let mut values = MaxValues::<i32, 3>::new();
values.push(2);
assert_eq!(values.as_ref(), [2]);
values.push(3);
values.push(4);
assert_eq!(values.iter().copied().collect::<HashSet<_>>(), HashSet::from([2, 3, 4]));
values.push(1);
assert_eq!(values.iter().copied().collect::<HashSet<_>>(), HashSet::from([2, 3, 4]));
values.push(5);
assert_eq!(values.iter().copied().collect::<HashSet<_>>(), HashSet::from([3, 4, 5]));
values.push(4);
assert_eq!(values.iter().copied().collect::<HashSet<_>>(), HashSet::from([4, 4, 5]));
}
请注意,MaxValues
结构体不保证任何元素顺序。这就是为什么我们将其转换为哈希集合以用于 assert_eq
宏。
使用迭代器适配器
常见的模式是遍历集合,并将元素推送到 MaxValues
,如下所示
use max_values::MaxValues;
fn main() {
let arr = [0, 1, 5, 7, 2, 3];
let values = MaxValues::<i32, 3>::new();
for i in arr {
values.push(i);
}
assert_eq!(values.into_iter().collect::<HashSet<_>>, HashSet::from([3, 5, 7]));
}
因此,MaxValues
实现了 FromIterable<T>
let arr = [0, 1, 5, 7, 2, 3];
let values = MaxValues::<i32, 3>::from_iter(arr.into_iter());
assert_eq!(values.into_iter().collect::<HashSet<_>>(), HashSet::from([3, 5, 7]));
此外,您还可以使用迭代器扩展特质 MaxValuesIterExt
来遍历迭代器的最大值
use max_values::MaxValuesIterExt;
fn main() {
let values = [1, 5, 2, 4, 7, 10, 0, 15, 3];
assert_eq!(
values.into_iter().max_values::<3>().collect::<HashSet<_>>(),
HashSet::from([7, 10, 15])
);
}
依赖项
~66KB