#sliding #iterator #adaptor #elements #copy #backing #non-copying

sliding_windows

非复制滑动窗口迭代器适配器的实现

7 个稳定版本

使用旧的 Rust 2015

3.0.0 2017年6月16日
2.0.4 2017年6月7日
2.0.3 2016年3月17日
2.0.2 2016年2月10日
1.0.0 2015年11月17日

1055算法

Download history 83/week @ 2024-03-13 45/week @ 2024-03-20 35/week @ 2024-03-27 45/week @ 2024-04-03 29/week @ 2024-04-10 48/week @ 2024-04-17 77/week @ 2024-04-24 44/week @ 2024-05-01 45/week @ 2024-05-08 65/week @ 2024-05-15 110/week @ 2024-05-22 79/week @ 2024-05-29 80/week @ 2024-06-05 82/week @ 2024-06-12 84/week @ 2024-06-19 52/week @ 2024-06-26

305 每月下载量
fuzzy_match 中使用

MIT 许可证

19KB
325

sliding_windows

此包提供了一种 Iterator 适配器,它产生由包装迭代器返回的元素上的“滑动窗口”。

值得注意的是,它不会复制元素,这使得代码相对高效。

因此,它略微违反了迭代器协议。不能同时有两个窗口访问数据。这在运行时进行检查。

支持存储是 Vec,因此此迭代器适配器不适用于非常大的窗口(>20个元素或非常大的元素)。

我很乐意接受一个 PR 来实现使用 VecDeque 或类似功能的相同功能,请参阅此 问题

安装

将其添加到您的 Cargo.toml

[dependencies]
sliding_windows = "2.0"

示例

extern crate sliding_windows;
use sliding_windows::{IterExt, Storage};

let mut storage: Storage<u32> = Storage::new(3);

for x in (0..5).sliding_windows(&mut storage) {
    println!("{:?}", x);
}

// This outputs:
// [0, 1, 2]
// [1, 2, 3]
// [2, 3, 4]

有关更多示例,请参阅文档

其他语言/包中的此功能

无运行时依赖