#slice #array-index #index #array

nightly index_many

一次性在多个位置索引切片的构思证明

12个版本 (5个破坏性更新)

0.6.1 2021年9月7日
0.6.0 2021年9月7日
0.5.2 2021年8月12日
0.4.1 2021年6月15日
0.1.2 2021年3月18日

#1896 in 数据结构

Download history 494/week @ 2024-03-13 775/week @ 2024-03-20 610/week @ 2024-03-27 521/week @ 2024-04-03 722/week @ 2024-04-10 811/week @ 2024-04-17 714/week @ 2024-04-24 460/week @ 2024-05-01 656/week @ 2024-05-08 605/week @ 2024-05-15 165/week @ 2024-05-22 565/week @ 2024-05-29 552/week @ 2024-06-05 388/week @ 2024-06-12 526/week @ 2024-06-19 740/week @ 2024-06-26

每月2,346次下载

MIT/Apache

105KB
2K SLoC

通过索引数组以(可变地)一次访问多个位置的切片的构思函数。

提供的API

此crate实现了多个API

  • "simple": 接受一个排序后的索引数组 [usize; N]
  • "simple_result": 接受一个排序后的索引数组 [usize; N],但具有基于 Result 的API。
  • "slice_index": 接受一个排序后的索引数组 [I; N],其中 I: SliceIndex<[T]>.
  • "generic": 使用通用的 I: Indices<N>,具有更高的灵活性。

示例

use index_many::generic::index_many_mut;

let mut v = vec![1, 2, 3, 4, 5];
let [a, b, c] = index_many_mut(&mut v, [0, 2, 4]);
*a += 10;
*b += 100;
*c += 1000;
assert_eq!(v, vec![11, 2, 103, 4, 1005]);

生成的汇编代码

文档中包含示例函数及其x86_64汇编代码生成。请参阅crate::_doc_assembly模块。

无运行时依赖