上没有这样的辅助方法Iterator trait https://doc.rust-lang.org/stable/std/iter/trait.Iterator.html直接地。然而,有两种主要方法可以做到这一点:
- Use the [T]::chunks() method https://doc.rust-lang.org/stable/std/primitive.slice.html#method.chunks(可以在
Vec<T>
直接地)。然而,它有一个微小的区别:它不会产生None
,但最后一次迭代会产生较小的切片。对于始终精确的切片,如果最后的块不完整,则忽略它,请参阅[T]::chunks_exact() method https://doc.rust-lang.org/stable/std/primitive.slice.html#method.chunks_exact.
:
let my_vec = (0..25).collect::<Vec<_>>();
for chunk in my_vec.chunks(10) {
println!("{:02?}", chunk);
}
Result:
```none
[00, 01, 02, 03, 04, 05, 06, 07, 08, 09]
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
[20, 21, 22, 23, 24]
```
- Use the Itertools::chunks() method https://docs.rs/itertools/0.7.1/itertools/trait.Itertools.html#method.chunks from 板条箱itertools https://crates.io/crates/itertools。这个板条箱扩展了
Iterator
来自标准库的特征所以这个chunks()
方法适用于所有迭代器!请注意,为了通用,其用法稍微复杂一些。这与上述方法具有相同的行为:在最后一次迭代中,块将变小而不是包含None
s.
:
extern crate itertools;
use itertools::Itertools;
for chunk in &(0..25).chunks(10) {
println!("{:02?}", chunk.collect::<Vec<_>>());
}
Result:
```none
[00, 01, 02, 03, 04, 05, 06, 07, 08, 09]
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
[20, 21, 22, 23, 24]
```