我设法使它工作(见下面的例子),但这需要多次迭代的数组。
有没有一种方法可以只对矢量进行一次迭代?
struct Vx {
pub a: f32,
pub b: f32,
}
fn main() {
let mut varr = Vec::new();
varr.push(Vx { a: 0., b: 0. });
varr.push(Vx { a: 1., b: 1. });
varr.push(Vx { a: 2., b: 2. });
let a: Vec<f32> = varr.iter().map(|v| v.a).collect();
let b: Vec<f32> = varr.iter().map(|v| v.b).collect();
println!("a: {:?}", a);
println!("b: {:?}", b);
}
字符串
3条答案
按热度按时间lztngnrs1#
map
+unzip
只适用于两个字段,但对于任意数量的字段,您始终可以使用更通用的fold
并将其解压缩为任何类型的结构:字符串
5f0d552i2#
可以使用
map
和unzip
:字符串
lb3vh1jj3#
这可以用迭代器来完成,如其他答案所示。然而,在这种情况下,一个简单的过程解决方案可能更合适:
字符串
Playground