#indices #slice #split #rayon

select_indices

从切片中获取多个共享/独占引用的迭代器

4 个版本 (稳定)

3.0.1-alpha-2 2022年2月9日
3.0.1-alpha 2022年2月8日
3.0.0 2022年3月21日
3.0.0-alpha 2021年12月6日
0.2.2 2021年11月14日

#2083Rust 模式

每月 25 次下载

MPL-2.0 许可证

55KB
1K SLoC

select_indices

GitHub Workflow Status crates.io docs.rs Crates.io

select_indices 是一个提供用于遍历切片的迭代器的 crate,它使用预先准备的索引列表。它可以简化代码的可读性,并在某些情况下提高性能。

文档

use select_indices::prelude::*;

fn main()
{
    struct BankAccount {
        pub name: String,
        pub balance: f32,
    }
    
    let mut vec: Vec<BankAccount> = vec![
        BankAccount { name: "Joey Bag o' Donuts".to_string(), balance: 4.27 },
        BankAccount { name: "Henry Howard Roosevelt".to_string(), balance: 83.20 },
        BankAccount { name: "Jenny Jenson".to_string(), balance: 54.32 },
        BankAccount { name: "The Dude".to_string(), balance: -134.01 },
        // Assume there's like 300 of these
    ];
    
    vec.select_indices_mut(&[1, 3]).for_each(|account| {
        account.balance -= 20.00;
        println!("{} now has ${}", account.name, account.balance);
    });
}

还有一个 rayon 功能标志,它提供 select_indices 迭代器的 ParallelIterator 版本。在某些情况下,这些迭代器可以大大提高切片遍历的性能。

依赖关系

~5–550KB
~11K SLoC