#iterator #nth #iterator-adapter #peek #cache #data-structures

peek-nth

一个迭代器适配器,允许您高效地查看迭代器的第 n 个元素

2 个不稳定版本

使用旧的 Rust 2015

0.2.0 2018 年 4 月 16 日
0.1.0 2018 年 4 月 8 日

#nth 中排名 12

Download history 21/week @ 2024-03-11 31/week @ 2024-03-18 27/week @ 2024-03-25 66/week @ 2024-04-01 17/week @ 2024-04-08 30/week @ 2024-04-15 31/week @ 2024-04-22 18/week @ 2024-04-29 17/week @ 2024-05-06 23/week @ 2024-05-13 24/week @ 2024-05-20 21/week @ 2024-05-27 17/week @ 2024-06-03 15/week @ 2024-06-10 23/week @ 2024-06-17 19/week @ 2024-06-24

每月下载量 77
3 个crate中(通过 lexer)使用

MIT/Apache

9KB
81

peek-nth

CircleCI branch AppVeyor branch Crates.io

一个迭代器适配器,允许您高效地查看迭代器的第 n 个元素。

中间值会被缓存,并且尽可能避免堆分配。

安装

首先,将 peek-nth 添加到您的 Cargo.toml 依赖项部分

[dependencies]
peek-nth = "0.2"

接下来,将以下代码片段添加到您的crate入口点(lib.rsmain.rs

extern crate peek_nth;

用法

extern crate peek_nth;

use peek_nth::IteratorExt;

fn main() {
    let mut iter = "Hello, world!".chars().peekable_nth();

    assert_eq!(iter.peek_nth(4), Some(&'o')); // Cache Miss
    assert_eq!(iter.peek_nth(3), Some(&'l')); // Cache Hit
    assert_eq!(iter.peek_nth(2), Some(&'l')); // Cache Hit
    assert_eq!(iter.peek_nth(1), Some(&'e')); // Cache Hit
    assert_eq!(iter.peek_nth(0), Some(&'H')); // Cache Hit
    assert_eq!(iter.peek_nth(7), Some(&'w')); // Cache Miss

    assert_eq!(iter.collect::<String>(), "Hello, world!");
}

许可证

根据您的选择,许可协议为以下之一

贡献

除非您明确表示,否则根据 Apache-2.0 许可证定义,您提交的任何有意包含在作品中的贡献,将根据上述方式双重许可,不附加任何额外条款或条件。

依赖关系

~125KB