# peekable_next [![Crates.io](https://img.shields.io/crates/v/peekable_next)](https://crates.io/crates/peekable_next) [![Docs.rs](https://docs.rs/peekable_next/badge.svg)](https://docs.rs/peekable_next) [![License: GPL-3.0](https://img.shields.io/badge/License-GPL--3.0-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) The `peekable_next` crate provides an extension for Rust iterators, introducing the `PeekableNext` struct and associated traits. This extension allows users to peek at the next element of an iterator without advancing it, which can be valuable in various scenarios where you need to inspect upcoming values before making further decisions. ## Usage Add this crate to your `Cargo.toml`: ```toml [dependencies] peekable_next = "0.2.0" Import the `PeekNext` trait into your code: ```rust use peekable_next::PeekNext; ``` # Basic Example ```rust let data = vec![1, 2, 3]; let mut iter = data.iter().peekable_next(); // Peeking allows us to see the next value without advancing the iterator assert_eq!(iter.peek(), Some(&&1)); assert_eq!(iter.peek_next(), Some(&&2)); assert_eq!(iter.next(), Some(&1)); // Advances to the next element (2) assert_eq!(iter.peek(), Some(&&2)); assert_eq!(iter.next(), Some(&2)); // Advances to the next element (3) // After the iterator is finished, peek returns None assert_eq!(iter.peek(), Some(&&3)); assert_eq!(iter.next(), Some(&2)); ``` # Documentation * [API Reference (docs.rs)](https://docs.rs/peekable_next) * [Crates.io](https://crates.io/crates/peekable_next)