你怎样才能轻松地将一个向量的向量借用为切片的切片呢?
我会得到以下错误:
换句话说,我如何为
fn use_slice_of_slices<T>(slice_of_slices: &[&[T]]) {
// Do something...
}
fn main() {
let vec_of_vec = vec![vec![0]; 10];
use_slice_of_slices(&vec_of_vec);
}
我会得到以下错误:
error[E0308]: mismatched types
--> src/main.rs:7:25
|
7 | use_slice_of_slices(&vec_of_vec);
| ^^^^^^^^^^^ expected slice, found struct `std::vec::Vec`
|
= note: expected type `&[&[_]]`
found type `&std::vec::Vec<std::vec::Vec<{integer}>>`
我可以将use_slice_of_slices
定义为:
fn use_slice_of_slices<T>(slice_of_slices: &[Vec<T>]) {
// Do something
}
如果外部向量被借用为切片,那么所有操作都能正常进行。但是,为了论证而论证,如果我想将其作为切片的切片借用怎么办?
假设无法自动将&Vec<Vec<T>>
强制转换为&[&[T]]
,那么如何定义以下函数borrow_vec_of_vec
?
fn borrow_vec_of_vec<'a, T: 'a>(vec_of_vec: Vec<Vec<T>>) -> &'a [&'a [T]] {
// Borrow vec_of_vec...
}
换句话说,我如何为
Vec<Vec<T>>
实现Borrow<[&[T]]>
?