Crates.io | dedup_iter |
lib.rs | dedup_iter |
version | 0.1.1 |
source | src |
created_at | 2017-07-08 09:58:49.203197 |
updated_at | 2017-07-12 17:24:26.041206 |
description | Deduplicating iterator adapters |
homepage | |
repository | https://github.com/aswaving/dedup_iter |
max_upload_size | |
id | 22539 |
size | 11,081 |
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
.
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.
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.
use dedup_iter::DedupByKeyAdapter;
assert_eq!(
"F I F O",
"First In, First Out".chars()
.dedup_by_key(|a| a.is_whitespace())
.collect::<String>()
);