Crates.io | peek-nth |
lib.rs | peek-nth |
version | 0.2.0 |
source | src |
created_at | 2018-04-08 22:03:35.693859 |
updated_at | 2018-04-16 18:58:05.604451 |
description | An iterator adapter that allows you to efficiently peek the nth item of an iterator. |
homepage | |
repository | https://github.com/zacharygolba/peek-nth |
max_upload_size | |
id | 59640 |
size | 23,461 |
An iterator adapter that allows you to efficiently peek the nth item of an iterator.
Itermediate values are memoized and heap allocations are avoided when possible.
First, add peek-nth
to the dependencies section of your Cargo.toml
:
[dependencies]
peek-nth = "0.2"
Next, add the following snippet to the entry point of your crate (lib.rs
or main.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!");
}
Licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.