- 已关闭**。此问题需要details or clarity。当前不接受答案。
- 想要改进此问题?**添加详细信息并通过editing this post阐明问题。
2天前关闭。
截至2天前,社区正在审查是否重新讨论此问题。
Improve this question
我试图将一个Vec转换为一个Vec〈(u8,u8,u8)〉,它将相邻元素分组,我想知道是否有一个快速的方法来完成这个操作,因为对于一个大图像的迭代可能会相当慢。 into a Vec<(u8, u8, u8)> grouping adjacent elements and want to know if there is a quick way of doing this as iteration for a large image could be quite slow.
我目前的最佳解决方案是:
let dimensions = (img.dimensions().0 as usize, img.dimensions().1 as usize);
let size = dimensions.0 * dimensions.1;
let raw_data: Vec<u8> = img.into_raw();
let mut data: Vec<(u8, u8, u8)> = Vec::with_capacity(size);
for i in 0..size {
data.push((raw_data[i*3], raw_data[i*3+1], raw_data[i*3+2]));
}
1条答案
按热度按时间jtw3ybtb1#
Itertools有一个
tuples()
适配器,它通过元组对连续项进行分组。另一种可能性是,标准库有
slice::chunks
和slice::chunks_exact
,这需要一个切片输入(或者一些引用切片的东西,比如vec),并且你失去了类型安全方面(因为它们返回的切片可能比chunks
指定的要小),但是它们不需要依赖。