fn main(){
let width= 10_usize;
let hight = 100_usize;
let mut grid_raw = vec![0 as f64; hight * width];
//create one vec on some pieces
let mut chunk_on_width: Vec<f64> = grid_raw.as_mut_slice().chunks_mut(width).collect();
let chunk_on_width: &mut [&mut [_]] = addition_mccorn_array.as_mut_slice();
let mut prediction: *mut [f64] = chunk_on_width[0];
//... *elsewhere* parts of two dim array and then i want to index in one
prediction[k] = 5_f64;
}
ERROR: error[E0608]: cannot index into a value of type *mut [f64]
Also if i want to pass it in c function , for example with signature
int cfunc( double *Fi, double * Ftd)
will be error of type:
= note: expected raw pointer *mut f64
found raw pointer *mut [f64]
As i want only pair of additional arrays to pass in,
Thanks!
I don't really understand what's going on here. Everything is mixed together. Can you please post the error and code separately? The way you index into an *mut [f64] is with (*ptr)[idx]
I mean it's very confusing to manage with raw pointers, in c++ it will be massive with which it is easy to manage unlike in rust fix sized array with which you can't do anything, but i think in rust it is some wraps about this and some keys to keep it safe)
I think you are looking for the as_ptr() and as_mut_ptr() methods on slices to get an immutable/mutable pointer to the first element.
let buffer: &[i32] = &[1, 2, 3, 4];
unsafe {
// normal index syntax on the slice
assert_eq!(buffer[2], 3);
// using pointer arithmetic
let ptr = buffer.as_ptr();
let third_element: *const i32 = ptr.add(2);
assert_eq!(*third_element, 3);
}