Rust 调用take后如何继续使用迭代器?

Rust 调用take后如何继续使用迭代器?,rust,iterator,Rust,Iterator,我想从迭代器中收集一些项,然后遍历其余项,类似这样: let iterator = text.split_whitespace(); let first_ten_words = iterator.take(10).collect(); for word in iterator { // This should iterate over the remaining words. } let iterator = text.split_whitespace(); let first_te

我想从迭代器中收集一些项,然后遍历其余项,类似这样:

let iterator = text.split_whitespace();
let first_ten_words = iterator.take(10).collect();

for word in iterator {
    // This should iterate over the remaining words.
}
let iterator = text.split_whitespace();
let first_ten_words = iterator.by_ref().take(10).collect();

for word in iterator {
    // This should iterate over the remaining words.
}
这不起作用,因为
take()
使用迭代器

显然,我可以使用
split_whitespace()
两次和
skip(10)
,但我假设这将对前10个单词进行两次拆分,因此效率低下

有更好的方法吗?

您可以这样使用:

let iterator = text.split_whitespace();
let first_ten_words = iterator.take(10).collect();

for word in iterator {
    // This should iterate over the remaining words.
}
let iterator = text.split_whitespace();
let first_ten_words = iterator.by_ref().take(10).collect();

for word in iterator {
    // This should iterate over the remaining words.
}