4 releases (2 breaking)
0.3.0 | Jul 1, 2021 |
---|---|
0.2.1 | May 28, 2021 |
0.2.0 | May 28, 2021 |
0.1.0 | May 28, 2021 |
#2831 in Rust patterns
41KB
929 lines
iter_columns
Iterate over columns easily. Works with Vecs, Slices and Arrays.
The support for std::array::IntoIter
is disabled by default
and is only available for Rust versions since (>=) 1.51.0.
To enable the support, use the array_into_iter
feature.
[dependencies]
iter_columns = { version = "0.3.0", features = ["array_into_iter"] }
Examples
Consistent column length
use iter_columns::prelude::*;
fn main() {
let test_data = vec![
vec![1, 2, 3],
vec![4, 5, 6],
];
assert_eq!(test_data.into_iter().columns().collect::<Vec<_>>(), [
[1, 4],
[2, 5],
[3, 6],
]);
}
Inconsistent column length
use iter_columns::prelude::*;
fn main() {
let test_data = vec![
vec![1, 2], // 2 columns
vec![4, 5, 6], // 3 columns
];
// you can also use iter() or iter_mut() instead of into_iter()
assert_eq!(test_data.iter().columns().collect::<Vec<_>>(), [
vec![&1, &4],
vec![&2, &5],
vec![&6],
]);
}
Alternative for inconsistent column length
use iter_columns::prelude::*;
fn main() {
let test_data = vec![
vec![1, 2],
vec![4, 5, 6],
];
// use columns_options() instead of columns()
assert_eq!(test_data.into_iter().columns_options().collect::<Vec<_>>(), [
vec![Some(1), Some(4)],
vec![Some(2), Some(5)],
vec![None, Some(6)],
]);
}