Vec<Vec> -> Vec
#
pub fn main(){
let v:Vec<Vec<u8>>=vec![vec![0,1,2],vec![3],vec![4,5,6,7,8],vec![]];
let flat_v:Vec<u8>= v.into_iter().map(|inner_v| inner_v.into_iter()).flatten().collect();
println!("{:?}", flat_v);
// [0, 1, 2, 3, 4, 5, 6, 7, 8]
}
🔗https://rust.godbolt.org/z/f18Kv5EMT
🔗std::iter::Iterator::map
🔗std::iter::Iterator::flatten
🔗std::iter::Iterator::collect
参照を集めたい場合はiter()を使えば良い。
iter()
,into_iter()
,iter_mut()
について
🔗https://doc.rust-lang.org/std/iter/#the-three-forms-of-iteration
おまけ #
こんな場合にも対応できる。
struct Instance{
// ...
vertex_colors:Vec<(f32,f32,f32,f32)>
// ...
}
fn x() {
// ...
let instances:Vec<Instances> = /* ... */;
// ...
let instance_vertex_colors: Vec<(f32, f32, f32, f32)> = instances
.into_iter()
.map(|i| i.vertex_colors.into_iter())
.flatten()
.collect();
// ...
}