4 releases (2 breaking)
Uses old Rust 2015
0.3.0 | Mar 11, 2018 |
---|---|
0.2.0 | Mar 9, 2018 |
0.1.1 | Mar 7, 2018 |
0.1.0 | Mar 7, 2018 |
#2521 in Algorithms
19KB
358 lines
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
Cargo.toml:
[dependencies]
slicetools = "0.2.*"
main.rs:
extern crate slicetools;
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:
#[macro_use] extern crate slicetools;
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]);
Changelog
0.3.*
- Add 3 new extensions to take groups of items.
0.2.*
-
Use own streaming iterator instead of regular iterator that was unsafe (allowed multiple mutable borrowing on the same item).
-
Add a new streamer for doing a cartesian product between two slices.