Crates.io | vec-entries |
lib.rs | vec-entries |
version | 1.0.0 |
source | src |
created_at | 2024-05-27 23:31:01.032389 |
updated_at | 2024-05-27 23:31:01.032389 |
description | Entry API for iterating over and removing elements from a `Vec` |
homepage | |
repository | https://github.com/Daniel-Aaron-Bloom/vec-entries |
max_upload_size | |
id | 1253852 |
size | 33,113 |
Entry API for iterating over and removing elements from a Vec
.
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.
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]);
Licensed under