2 个版本
0.1.1 | 2024 年 6 月 18 日 |
---|---|
0.1.0 | 2024 年 4 月 20 日 |
#752 在 Rust 模式
在 3 个crate中使用 (通过 typle)
9KB
172 行
zip_clone
将迭代器压缩成重复克隆的对象。
传递一个实现了 Clone
的所有权对象,以创建一个迭代器,该迭代器将原始迭代器与对象的克隆组合。
一次迭代返回原始对象,因此比 iter.zip(repeat_with(|| cloned.clone()))
少一个克隆。
这对于每次迭代都克隆一个值但迭代后不使用的循环很有用。
而不是使用
let mut v = vec![];
let s = String::from("Hello");
for _ in 0..10 {
v.push(s.clone());
}
使用
use zip_clone::ZipClone as _;
let mut v = vec![];
let s = String::from("Hello");
for (_, s) in (0..10).zip_clone(s) {
v.push(s);
}
如果跳过了项目,对象可能被克隆得更少。例如,last()
消耗迭代器,但返回最后一个值,而不对中间值克隆对象
use zip_clone::ZipClone as _;
let mut v = vec![];
let s = String::from("Hello");
v.push((0..10).zip_clone(s).last());