dedup_iter

Crates.iodedup_iter
lib.rsdedup_iter
version0.1.1
sourcesrc
created_at2017-07-08 09:58:49.203197
updated_at2017-07-12 17:24:26.041206
descriptionDeduplicating iterator adapters
homepage
repositoryhttps://github.com/aswaving/dedup_iter
max_upload_size
id22539
size11,081
(aswaving)

documentation

https://docs.rs/dedup_iter/0.1.1/dedup_iter

README

Build Status

This crate provides a couple of iterator adapters for deduplication of elements from a source iterator, inspired by the dedup methods in Vec.

dedup

The DedupIteratorAdapter is an iterator adapter that removes consecutive repeated elements from the source iterator. The dedup trait method of DedupIteratorAdapter returns a DedupIterator.

Example

use dedup_iter::DedupIteratorAdapter;

assert_eq!("abcdefe", "aabbccdddeeeeffffeee".chars().dedup().collect::<String>());

dedup_by

The DedupByAdapter is an iterator adapter that removes consecutive repeated elements from the source iterator using a function to determine equality. The dedup_by trait method returns a DedupBy iterator struct.

Examples

use std::ascii::AsciiExt;
use dedup_iter::DedupByAdapter;

assert_eq!(
    "This string had way too much redundant whitespace!",
    "This  string   had      way too     much redundant \n whitespace!".chars()
     .dedup_by(|a, b| a.is_whitespace() && b.is_whitespace() )
     .collect::<String>()
);

dedup_by_key

The DedupByKeyAdapter is an iterator adapter that removes consecutive repeated elements from the source iterator using a key to determine equality. The dedup_by_key trait method returns a DedupByKey iterator struct.

Examples

use dedup_iter::DedupByKeyAdapter;

assert_eq!(
    "F I F O",
    "First In, First Out".chars()
     .dedup_by_key(|a| a.is_whitespace())
     .collect::<String>()
);
Commit count: 7

cargo fmt