我有一个u64的向量outputs
,基本上只有0和1,我想把这个向量分成相等的部分,得到Vec<Vec<bool>>
或Vec<&[bool]]
。
然而,不知怎么的我做不到它告诉我
256 | .collect();
| ^^^^^^^ value of type `std::vec::Vec<std::vec::Vec<bool>>` cannot be built from `std::iter::Iterator<Item=bool>`
使用
let sqrt_output = (outputs.len() as f64).sqrt() as usize;
let output_grid: Vec<&[bool]> = outputs
.chunks(sqrt_output)
.map(|s| {
match s {
[1_u64] => true,
[0_u64] => false,
// this is a hack but I don't know how to return an error ...
_ => true,
}
})
.collect();
1条答案
按热度按时间q8l4jmvw1#
若要取回
Vec<Vec<bool>>
,您的map
闭包需要返回Vec<bool>
下面是一个例子: