我有一个结构体结构,包含行星信息,如位置,速度等
pub struct Body {
pub id: u8,
pub pos: Vec<f64>,
pub vel: Vec<f64>,
}
pub struct Data {
pub system_vec: Vec<Body>,
}
字符串
为了把所有的pos/vel向量放到一个nalgebra矩阵中,我需要首先把所有的body向量放平到一个迭代器中,我可以把它提供给nalgebra API。
let ncols: &usize = &self.system_vec.len();
let temp_vec = &data.system_vec
.iter()
.map(|body| body.pos.clone())
.collect::<Vec<Vec<f64>>>()
.into_iter()
.flatten()
.collect::<Vec<f64>>();
na::OMatrix::<f64, U3, Dyn>::from_iterator(
*ncols,
temp_vec.iter().cloned()
)
型
我的问题是,这似乎是令人难以置信的过度工程。我迭代,然后收集,然后再迭代。我相信有一个更好的方法,但我相当新的生 rust ,所以这是最好的,我已经到目前为止。有没有一个更有效的方法来获得一个克隆版本的数据到矩阵?
1条答案
按热度按时间tquggr8v1#
我找到了一个更简单的解决方案-
字符串