#retain #give #mutable #mutable-borrow #no-std #predicate #reference

已弃用 no-std retain_mut

提供与 retain 相同功能但将可变借用给谓词的方法

10 个版本

使用旧的 Rust 2015

0.1.9 2022年5月20日
0.1.7 2022年2月25日
0.1.5 2021年12月3日
0.1.4 2021年9月26日
0.1.0 2018年11月28日

#6 in #mutable-borrow

Download history 143836/week @ 2024-03-14 141122/week @ 2024-03-21 146276/week @ 2024-03-28 147543/week @ 2024-04-04 151798/week @ 2024-04-11 151525/week @ 2024-04-18 145441/week @ 2024-04-25 143405/week @ 2024-05-02 151634/week @ 2024-05-09 148949/week @ 2024-05-16 150116/week @ 2024-05-23 166948/week @ 2024-05-30 167179/week @ 2024-06-06 148444/week @ 2024-06-13 138998/week @ 2024-06-20 134578/week @ 2024-06-27

627,230 每月下载
用于 324 个 crate (4 直接)

MIT 许可证

11KB
111

RetainMut

此 crate 已弃用。Rust 1.61 稳定了 retain_mut 用于 VecVecDeque,因此您可以直接使用它们。此 crate 已不再维护。

此 crate 提供了 trait RetainMut,它为 VecVecDeque 提供了 retain_mut 方法。

retain_mut基本上与retain相同,只不过它将项目的可变引用提供给谓词函数。

由于没有理由retain不能以这种方式设计,因此此 crate基本上只是复制了 std 中的代码,并对提供可变引用进行了少量修改。这些 impl 的代码可以在 crate 的代码注释中找到。

这可能是 Rust 库中的历史错误,即 retain 应从一开始就执行此操作。请参阅 rust-lang/rust#25477

从 Rust 1.58 开始,std 已添加了一个不稳定的方法 retain_mut,请参阅 rust-lang/rust#90829。一旦它得到稳定,您可以简单地删除此 crate。

示例

Vec

let mut vec = vec![1, 2, 3, 4];
vec.retain_mut(|x| { *x *= 3; *x % 2 == 0 });
assert_eq!(vec, [6, 12]);

VecDeque

let mut deque = VecDeque::from(vec![1, 2, 3, 4]);
deque.retain_mut(|x| { *x *= 3; *x % 2 == 0 });
assert_eq!(deque, [6, 12]);

无运行时依赖