一个人怎样才能拥有一个for
... in
循环借用它正在操作的迭代器?例如:
let x = vec![1, 2, 3, 4];
let i = x.iter();
for a1 in i { break; } // iterate over just one "i"
for a2 in i { break; } // continue iterating through "i" here
你不能简单地给予&i
到 for,因为这样它就无法转换&Iterator
to an Iterator
object.
您可以使用Iterator::by_ref https://doc.rust-lang.org/stable/std/iter/trait.Iterator.html#method.by_ref借用迭代器并在借用结束后继续使用它:
fn main() {
let x = vec![1, 2, 3, 4];
let mut i = x.iter();
for _ in i.by_ref() { break; } // iterate over just one "i"
for _ in i.by_ref() { break; } // continue iterating through "i" here
assert_eq!(Some(&3), i.next())
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)