Crate slicetools

Source
Expand description

This crate aims to provide various tools for slices.

This crate use its own streaming iterator due to the lack of generic associated type in the language: you therefore cannot use those iterators with the for control flow. Use the while let control flow, or the macro helper, as you can see below.

§Example

use slicetools::*;

let mut v = vec![1, 2, 3, 4];
{
    let mut it = v.pairs_mut();
     
    while let Some((a, b)) = it.next() {
        if *b > *a {
            *a += 1;
        }
    }
}
assert_eq!(v, &[4, 4, 4, 4]);

Or, with the helper macro (do not forget to #[macro_use]):

use slicetools::*;
 
let mut v = vec![1, 2, 3, 4];
 
stream!( v.pairs_mut() => (a, b) in {
    if *b > *a {
        *a += 1;
    }
});
assert_eq!(v, &[4, 4, 4, 4]);

Macros§

stream
Convenient helper to use easily the custom streaming iterator.

Traits§

SliceTools
A trait to extend slices and Vecs with streaming iterators.
StreamerMut
A trait to implement streaming iterators that can return mutable reference to oneself.