brendanashworth / peepable

A Rust look-alike for Peekable that allows peeping into immutable references.

Home Page:https://crates.io/crates/peepable

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

peepable

Crates.io Build Status docs.rs

peepable is a Rust look-alike for Peekable. It behaves slightly different as it eagerly loads the next value in the Iterator. This allows .peep() to be called on an immutable reference, saving you from the borrow checker.

Example

use std::iter::Iterator;
use peepable::Peepable;

let mut iter = vec![1, 2, 3].into_iter();

// Note, this is not "mut peeper"!
let peeper = Peepable::new(iter);

assert_eq!(peeper.peep(), Some(&1));

// When mutable, we can use it as a normal iterator.
let mut peeper = peeper;

assert_eq!(peeper.next(), Some(1));

assert_eq!(peeper.peep(), Some(&2));
assert_eq!(peeper.next(), Some(2));

assert_eq!(peeper.next(), Some(3));

assert_eq!(peeper.peep(), None);
assert_eq!(peeper.next(), None);

License

peepable is licensed under the MIT license.

About

A Rust look-alike for Peekable that allows peeping into immutable references.

https://crates.io/crates/peepable

License:MIT License


Languages

Language:Rust 100.0%