index_many

Crates.ioindex_many
lib.rsindex_many
version0.6.1
sourcesrc
created_at2021-03-17 23:54:57.170973
updated_at2021-09-07 21:07:20.940853
descriptionA proof of concept for indexing an slice at multiple locations at once
homepage
repositoryhttps://github.com/Kimundi/index_many
max_upload_size
id370312
size117,858
Marvin Löbel (Kimundi)

documentation

https://docs.rs/index_many/

README

Proof of concept functions for (mutably) accessing a slice at multiple positions at once via an array of indices.

Provided APIs

This crate implements multiple APIs:

  • "simple": accepts a sorted array [usize; N] of indices.
  • "simple_result": accepts a sorted array [usize; N] of indices, but with an Result based API.
  • "slice_index": accepts a sorted array [I; N] of indices, where I: SliceIndex<[T]>.
  • "generic": uses a generic I: Indices<N> that allows for more flexibility.

Example

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

Generated Assembly

The docs contain example functions with their x86_64 assembly codegen. See the [crate::_doc_assembly] module.

Commit count: 80

cargo fmt