gpt4 book ai didi

rust - 在不复制的情况下使用迭代器

转载 作者:行者123 更新时间:2023-11-29 08:19:12 26 4
gpt4 key购买 nike

我不得不更换

let mut bo = vec![];
try!(o.read_to_end(&mut bo));
let mut bo = bo.into_iter();
let vs : Vec<_> = (&mut bo).take(BUFFER).collect();
try!(io::stdout().write(&vs));

有了这个

let mut bo = vec![];
try!(o.read_to_end(&mut bo));
let mut io = 0;
let next = min(bo.len(), io + BUFFER);
try!(io::stdout().write(&bo[io..next]));

使用切片的速度是将数据复制到 Vec 的两倍多。有没有办法不用复制就可以使用take(n)

最佳答案

Iterator::take不做任何复制。另一方面,将迭代器收集到一个向量中,既分配空间又将项目从迭代器移动到集合中。

使用切片是这里最惯用的解决方案。您有一系列连续的字节要输出到向量中,切入该向量可以让您几乎自由地查看这些字节的范围。

关于rust - 在不复制的情况下使用迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34275181/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com