#vec #extension #entry

no-std vec-entries

迭代和从 Vec 中删除元素的 Entry API

1 个稳定版本

1.0.0 2024 年 5 月 27 日

682数据结构

Download history 327/week @ 2024-05-27 223/week @ 2024-06-03 43/week @ 2024-06-10 81/week @ 2024-06-17 44/week @ 2024-06-24 8/week @ 2024-07-01 39/week @ 2024-07-08 28/week @ 2024-07-15 6/week @ 2024-07-22 26/week @ 2024-07-29 43/week @ 2024-08-05

每月 105 次下载

MIT 许可证

28KB
442

vec-entries

Crates.io Workflow Status

迭代和从 Vec 中删除元素的 Entry API。

描述

有时您想以比 Vec::dedup_byVec::retainVec::drain 更复杂的方式有效地删除和修改 Vec 的元素。这个 crate 旨在提供类似但更广泛的功能。

使用

只需导入扩展特质并调用新方法。 EntriesExt::entries 允许遍历元素、修改、删除和按需重新插入。像 Vec::dedup_by,这是通过传递一个函数来完成的,该函数接收一个 Entries 对象并返回任何内容。

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

许可证

许可下

无运行时依赖