Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/zacharygolba/peek-nth
An iterator adapter that allows you to efficiently peek the nth item of an iterator.
https://github.com/zacharygolba/peek-nth
cached iterators nth peek rust
Last synced: 23 days ago
JSON representation
An iterator adapter that allows you to efficiently peek the nth item of an iterator.
- Host: GitHub
- URL: https://github.com/zacharygolba/peek-nth
- Owner: zacharygolba
- License: apache-2.0
- Created: 2018-04-08T21:42:28.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2022-09-22T12:42:21.000Z (about 2 years ago)
- Last Synced: 2024-10-10T20:48:55.404Z (about 1 month ago)
- Topics: cached, iterators, nth, peek, rust
- Language: Rust
- Size: 11.7 KB
- Stars: 3
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE-APACHE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# peek-nth
[![CircleCI branch](https://img.shields.io/circleci/project/github/zacharygolba/peek-nth/master.svg?style=flat-square)](https://circleci.com/gh/zacharygolba/peek-nth/tree/master) [![AppVeyor branch](https://img.shields.io/appveyor/ci/zacharygolba/peek-nth/master.svg?logo=appveyor&style=flat-square)](https://ci.appveyor.com/project/zacharygolba/peek-nth/branch/master) [![Crates.io](https://img.shields.io/crates/v/peek-nth.svg?style=flat-square)](https://crates.io/crates/peek-nth)
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.
## Installation
First, add `peek-nth` to the dependencies section of your `Cargo.toml`:
```toml
[dependencies]
peek-nth = "0.2"
```Next, add the following snippet to the entry point of your crate (`lib.rs` or `main.rs`):
```rust
extern crate peek_nth;
```## Usage
```rust
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 Missassert_eq!(iter.collect::(), "Hello, world!");
}
```## License
Licensed under either of
* Apache License, Version 2.0
([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
* MIT license
([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)at your option.
## Contribution
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.