Crates.io | spans |
lib.rs | spans |
version | 1.0.0 |
source | src |
created_at | 2021-01-22 14:42:49.009197 |
updated_at | 2021-01-22 14:42:49.009197 |
description | Split an iterator into contiguous spans. |
homepage | |
repository | https://github.com/florianpircher/spans |
max_upload_size | |
id | 345328 |
size | 10,816 |
This crate allows you to split an iterator into contiguous spans.
Import the Spans
trait to extend Iterator
:
use spans::Spans;
Now you can use Spans::spans_by_key
to split an iterator into contiguous spans:
let vec = vec![1, 2, 5, 6, 7, 11, 13, 14, 15];
let mut spans = vec.iter().spans_by_key(|&&x| x, |a, b| a + 1 == b);
while let Some(span) = spans.next() {
println!("span = {:?}", span.collect::<Vec<_>>());
}
The code above splits the vector into spans where each item is 1 larger than the proceeding item. The following text is printed:
span = [1, 2]
span = [5, 6, 7]
span = [11]
span = [13, 14, 15]
Many thanks to Matt Brubeck for helping me so generously on the Rust users forum.