首页 > 解决方案 > 我如何通过 Vec> 一个函数?

问题描述

给定一个 s 的二维向量i32

let v = vec![
    vec![1, 1, 1], 
    vec![0, 1, 0], 
    vec![0, 1, 0],
];

如何将其传递给函数以最终打印其详细信息?我试过:

fn printVector(vector: &[[i32]]) {
    println!("Length{}", vector.len())
}

标签: vectorrust

解决方案


您可以使用一个函数,它接受一个切片TwhereT也可以作为切片引用:

fn print_vector<T>(value: &[T])
where
    T: AsRef<[i32]>,
{
    for slice in value {
        println!("{:?}", slice.as_ref())
    }
}

操场

如果你想接受任何类型而不是 just i32,你也可以概括一下:

fn print_vector<T, D>(value: &[T])
where
    T: AsRef<[D]>,
    D: Debug,
{
    for slice in value {
        println!("{:?}", slice.as_ref())
    }
}

操场


推荐阅读