我想知道从Rust中的into_iter()
开始克隆迭代器的成本是多少,但找不到任何有意义的东西.
考虑如下代码:
let v = vec![1,2,3,4,...]; // Some large vector
let iter = v.into_iter().map(...some closure...);
let another_iter = iter.clone(); // What is copied here??
因为我已经将向量移入迭代器,所以iter
现在拥有具有向量值的内部缓冲区.这正是我想要实现的抽象容器类型.
然而,当我拨打iter.clone()
时会发生什么呢?它是复制带有数据的整个内部缓冲区(可能非常昂贵),还是只复制迭代器状态,同时引用相同的缓冲区(廉价)?
有没有一种惯用的方法来存储和廉价地克隆这种源自into_iter()
的迭代器?