I am a bit confused why i need to do such gymnastics to transform a vector of vector into a slice of slices. (see the out_buffers variable)
Any tips how one should "work" ? To me it seemed that functions with arguments that take slices would be most flexible.
Also i am surprised that a fixed length slice is not the same type as a slice (see the in_buffers variable)
fn process(out_buffers: &mut [&mut [i32]], in_buffers: &[&[i32]]) {
out_buffers[0][0] = in_buffers[0][0];
}
fn main() {
let mut out_buffers = vec![vec![0]];
let in_buffers = [&[1i32; 1]];
let mut out_buffers = out_buffers
.iter_mut()
.map(|v| v.as_mut_slice())
.collect::<Vec<&mut [i32]>>();
let out_buffers: &mut [&mut [i32]] = out_buffers.as_mut_slice();
let in_buffers = [[1i32; 1].as_slice()];//to avoid error
process(out_buffers, in_buffers.as_slice());
}