recursion - Rust: passing array recursively -
i got started rust , have mixed feelings. take dummy example, hope self-explanatory:
fn set_values(pos: usize, val: u64, array: &mut [u64]) { if pos >= array.len() { return; } array[pos] = val; set_values(pos+1, val+1, array); } this works fine calling:
set_values(0, 42, &mut my_array); i totally reason behind &mut in first function call, why hell during recursive call don't have specify it?
not that, if decide write set_values(pos+1, val+1, &mut array); compiler complains , tells me have change function signature to
fn set_values(pos: usize, val: u64, mut array: &mut [u64]) sorry me doesn't make sense.
when declaring array, you're doing
let myarray = vec::new(); to call as,
set_values(0, 42, &mut my_array); in above statement, you're making mutable reference out of array. because function expects mutable reference array, types have match. simple enough?
within function type of array known &mut [u64]
so don't need make mutable reference out of since it's mutable reference. :).
Comments
Post a Comment