对于一维,代码模拟如下:
fn main() {
let a = vec![1, 2, 3, 4, 5];
print_it(&a); // :)
}
fn print_it(p: &[usize]) {
println!("{:?}", p);
}
我试图将等效的逻辑应用于二维向量,但它不起作用。
fn main() {
let a: Vec<Vec<usize>> = vec![
vec![1,2,3,4,],
vec![5,6,7,8,],
];
print_it(&a); // :( expected slice `[&[usize]]`, found struct `Vec`
}
fn print_it(p: &[&[usize]] ) {
println!("{:?}", p);
}
我做错了什么?
note: expected reference '&[&[usize]]' found reference '&Vec<Vec<usize>>'
该函数期望一个usize
的切片,但您传递了一个Vec
的Vec
的引用。 - HerohtarVec <&[usize]>
,或者将print_it
更改为接受&[Vec<usize>]
(甚至是&Vec<Vec<usize>>
)。 - Herohtar