vector - 如何将 Vec<Vec<i32>> 传递给函数?

标签 vector rust

给定一个 i32 的二维向量:

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

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

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

最佳答案

您可以使用接受 T 切片的函数,其中 T 也可以作为切片引用:

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

playground

如果你想接受任何类型而不仅仅是 i32,你也可以概括这个:

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

playground

关于vector - 如何将 Vec<Vec<i32>> 传递给函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51859222/

相关文章:

vector - 根据索引在循环中删除向量的元素

c++ - vector 迭代器错误

python - 使用 NumPy 迭代和修改数组

c++ - std::list 与 std::vector 迭代

c++ - 我的 for 循环怎么搞砸了?

types - 如何修复 "implicitly returns '()' as its body has no tail or ' return'表达式?

可以使用 TensorFlow C API 训练 Keras 模型吗?

rust - 先前迭代中的可变借用,或者可能是终生问题?

import - 如何 "use"或导入本地 Rust 文件?

rust - Rust 中的函数是一等对象吗?