4个版本 (2个破坏性更新)

0.3.0 2021年7月1日
0.2.1 2021年5月28日
0.2.0 2021年5月28日
0.1.0 2021年5月28日

#2828Rust模式

MIT/Apache

41KB
929

iter_columns

轻松遍历列。支持Vecs、Slices和Arrays。

默认情况下禁用了对std::array::IntoIter的支持,并且仅适用于Rust版本1.51.0及以上。要启用支持,请使用array_into_iter功能。

[dependencies]
iter_columns = { version = "0.3.0", features = ["array_into_iter"] }

示例

列长度一致

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],
    ]);
}

列长度不一致

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],
    ]);
}

不一致列长度的替代方案

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)],
    ]);
}

无运行时依赖

功能