vec-entries 1.0.0

Entry API for iterating over and removing elements from a `Vec`
Documentation
  • Coverage
  • 86.67%
    26 out of 30 items documented16 out of 26 items with examples
  • Size
  • Source code size: 32.62 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 4.03 MB This is the summed size of all files generated by rustdoc for all configured targets
  • Links
  • Daniel-Aaron-Bloom/vec-entries
    0 0 0
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • Daniel-Aaron-Bloom

vec-entries

Crates.io Workflow Status

Entry API for iterating over and removing elements from a Vec.

Description

Sometimes you want to do efficently remove and modify elements of a Vec in a slightly more complex way than Vec::dedup_by, Vec::retain, or Vec::drain enable. This crate aims to target a similar, but more expansive functionality.

Usage

Just import the extension trait and call the new method. The EntriesExt::entries enables iterating across elements, mutating, removing, and re-inserting as needed. Like Vec::dedup_by this is done by passing in a function which take an Entries object and returns anything.

use vec_entries::EntriesExt;

let mut v = vec![1, 2, 3];
let c = v.entries(.., |e| {
    let a = e.remove().unwrap();      // Remove the `1`
    let b = e.remove_back().unwrap(); // Remove the `3`
    e.try_insert_outside(0);          // Insert a `0` where we removed the `1`
    a + b
});
assert_eq!(c, 4);
assert_eq!(v, [0, 2]);

License

Licensed under