Rust 您如何轻松地借用Vec<;Vec<;T>&燃气轮机;作为a&;[&;[T]]?

Rust 您如何轻松地借用Vec<;Vec<;T>&燃气轮机;作为a&;[&;[T]]?,rust,Rust,如何轻松地借用向量向量作为切片 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); } 外向量会被借用成一个切片,所有的都会起作用。但是,如果只是为了争论,我想借用它作为一个

如何轻松地借用向量向量作为切片

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);
}
外向量会被借用成一个切片,所有的都会起作用。但是,如果只是为了争论,我想借用它作为一个切片呢

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);
}
假设从
&Vec
自动强制到
&[&[T]
是不可能的,那么我如何定义一个函数
借用&u Vec

fn borrow_vec_of_vec<'a, T: 'a>(vec_of_vec: Vec<Vec<T>>) -> &'a [&'a [T]] {
    // Borrow vec_of_vec...
}
fn借用vec中的vec(vec中的vec:vec)->&'a[&'a[T]]{
//借一本一本的。。。
}

换言之,我如何为
Vec
实现
借用

不能

根据定义,切片是现有元素集合上的视图。它不能凭空想象出新的元素,或现有元素的新视图

这源于这样一个事实,即Rust通用参数通常是不变量。也就是说,虽然
&Vec
可以转换为
&T]
格式,但这两个表达式中的
T
必须匹配


一个可能的解决办法是自己去做

use std::fmt::Debug;

fn use_slice_of_slices<U, T>(slice_of_slices: &[U])
where
    U: AsRef<[T]>,
    T: Debug,
{
    for slice in slice_of_slices {
        println!("{:?}", slice.as_ref());
    }
}

fn main() {
    let vec_of_vec = vec![vec![0]; 10];
    use_slice_of_slices(&vec_of_vec);
}
使用std::fmt::Debug;
fn使用切片中的切片(切片中的切片:&[U])
哪里
U:AsRef,
T:调试,
{
对于切片中的切片{
println!(“{:?}”,slice.as_ref());
}
}
fn main(){
让vec_of_vec=vec![vec![0];10];
使用\u切片中的\u切片(&vec\u中的\u向量);
}
不是强制要求元素的类型,而是接受任何类型。。。但是放置一个必须强制到
[T]
的边界

这具有几乎相同的效果,因为通用函数只能将
[T]
作为一个切片进行操作。作为奖励,它可以处理多种类型(任何类型都可以强制为
[T]