| Crates.io | peeknth |
| lib.rs | peeknth |
| version | 0.3.0 |
| created_at | 2025-07-25 10:23:29.393926+00 |
| updated_at | 2025-08-02 01:13:19.206486+00 |
| description | Iterator adapters for peeking multiple elements ahead or behind, with optional fixed-size buffers. |
| homepage | |
| repository | https://github.com/yua134/peeknth |
| max_upload_size | |
| id | 1767400 |
| size | 126,482 |
An iterator adapter for peeking multiple elements ahead or behind in a Rust iterator.
peek_nth(n))peek_front, peek_back)peek_range(start..end))peekn, peekdn, peekde)SizedPeekN, SizedPeekDn – Zero-allocation, fixed-capacity peek buffers| Feature | Description |
|---|---|
peekn |
Enables PeekN, SizedPeekN (forward peek types) |
peekdn |
Enables PeekDN, SizedPeekDN (double-ended peek types) |
peekde |
Enables PeekableDE, a lightweight double-ended peek wrapper |
alloc |
Required for types that use dynamic buffers (PeekN, PeekDN, etc.) |
default |
["peekn", "alloc"] |
all |
Enables all features |
You can control features in Cargo.toml like:
peeknth = { version = "0.3", features = ["peekdn"] }
This crate is 100% #![no_std] compatible.
SizedPeekN, SizedPeekDN and PeekableDE require no allocation and run on bare-metal targets.PeekN and PeekDN require the alloc crate to support internal buffers (e.g. VecDeque).To use in strict no_std (no alloc), only use the Sized* types:
peeknth = { version = "0.2", default-features = false, features = ["peekn","peekdn"] }
use peeknth::peekn;
let mut iter = peekn(1..);
assert_eq!(iter.peek(), Some(&1));
assert_eq!(iter.peek_nth(2), Some(&3));
use peeknth::peekdn;
let mut iter = peekdn(1..=5);
assert_eq!(iter.peek_front(), Some(&1));
assert_eq!(iter.peek_back(), Some(&5));
assert_eq!(iter.next(), Some(1));
assert_eq!(iter.next_back(), Some(5));
use peeknth::peekablede;
let mut iter = peekablede(10..=12);
assert_eq!(iter.peek_front(), Some(&10));
assert_eq!(iter.peek_back(), Some(&12));
use peeknth::peekn;
let mut iter = peekn(0..5);
let values: Vec<_> = iter.peek_range(1..4).cloned().collect();
assert_eq!(values, vec![1, 2, 3]);
use peeknth::peekn;
let mut iter = peekn(0..);
let result: Vec<_> = iter.while_next(|&x| x < 5).collect();
assert_eq!(result, vec![0, 1, 2, 3, 4]);
use peeknth::sizedpeekn;
let mut it = sizedpeekn::<_, 4>(0..);
assert_eq!(it.peek_nth(1), Some(&1));
use peeknth::sizedpeekdn;
let mut it = sizedpeekdn::<_, 2, 2>(1..=5);
assert_eq!(it.peek_back_nth(0), Some(&5));
#![no_std] compatiblealloc for heap-backed types (PeekN, PeekDn, etc.)alloc: SizedPeekN, SizedPeekDN, PeekableDEThis project is dual-licensed under either:
You may choose the license that best suits your needs.