【发布时间】:2015-06-14 19:18:02
【问题描述】:
我试图弄清楚如何从我首先过滤的向量中返回一个元素窗口,而不将其复制到新向量中。
所以这是一种天真的方法,效果很好,但我认为最终会从第 5 行分配一个我不想做的新向量。
let mut buf = Vec::new();
file.read_to_end(&mut buf);
// Do some filtering of the read file and create a new vector for subsequent processing
let iter = buf.iter().filter(|&x| *x != 10 && *x != 13);
let clean_buf = Vec::from_iter(iter);
for iter in clean_buf.windows(13) {
print!("{}",iter.len());
}
我可以使用链()的替代方法?在不复制到新的 Vec 的情况下实现相同的目标
for iter in buf.iter().filter(|&x| *x != 10 && *x != 13) {
let window = ???
}
【问题讨论】:
-
从描述中不清楚:之后您还需要
buf吗?还是可以修改(read_to_end之后)? -
一旦我有了
clean_buf,在这个例子中我就不再需要它了