Hi,
I have a function that requires of me to pass my 2d vector as &[&[u8]]
, But it seams i cannot do that. Example:
fn flip(vc:&[u8])->Vec<u8>{
let mut vec = vc.to_vec();
let l = vec.len();
let tmp = vec[0];
vec[0] = vec[l-1];
vec[l-1] = tmp;
vec
}
fn pass (v:&[&[u8]]){
println!("{:?}",v)
}
fn main() {
let mut vec= Vec::new();
let mut vc = vec![1u8,2,3,4,5];
for _i in 0..3 {
vc = flip(&vc);
vec.push(&vc.clone())
}
pass(&*vec);
}
Error:
Compiling playground v0.0.1 (/playground)
error[E0308]: mismatched types
--> src/main.rs:26:10
|
26 | pass(&*vec);
| ---- ^^^^^ expected slice `[u8]`, found struct `Vec`
| |
| arguments to this function are incorrect
|
= note: expected reference `&[&[u8]]`
found reference `&[&Vec<u8>]`
note: function defined here
--> src/main.rs:11:4
|
11 | fn pass (v:&[&[u8]]){
| ^^^^ ----------
For more information about this error, try `rustc --explain E0308`.
error: could not compile `playground` due to previous error
Given i cannot change fn pass()
, is there a was to resolve this issue?