Vector 如何将Vec传递给函数?

Vector 如何将Vec传递给函数?,vector,rust,Vector,Rust,给定i32s的2D矢量: 如何将其传递给函数以最终打印其详细信息?我试过: fn printVector(vector: &[[i32]]) { println!("Length{}", vector.len()) } 由于要将向量传递给函数,以下代码应该可以工作: fn print_vector(vector: Vec<Vec<i32>>) { println!("Length{}", vector.len()) } 由于要将向量传递给函数,

给定i32s的2D矢量:

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

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

由于要将向量传递给函数,以下代码应该可以工作:

fn print_vector(vector: Vec<Vec<i32>>) {
    println!("Length{}", vector.len())
}

由于要将向量传递给函数,以下代码应该可以工作:

fn print_vector(vector: Vec<Vec<i32>>) {
    println!("Length{}", vector.len())
}
在本例中,&Vec
在本例中,&Vec您需要传递一片向量-&Vec,而不是一片切片:

fn print_vector(vector: &[Vec<i32>]) {
    println!("Length {}", vector.len())
}

fn main() {
    let v = vec![vec![1, 1, 1], vec![0, 1, 0], vec![0, 1, 0]];
    print_vector(&v);
}

您需要传递一个向量片-&[Vec],而不是一个切片:

fn print_vector(vector: &[Vec<i32>]) {
    println!("Length {}", vector.len())
}

fn main() {
    let v = vec![vec![1, 1, 1], vec![0, 1, 0], vec![0, 1, 0]];
    print_vector(&v);
}

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

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

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

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

检查这个问题惯用Rust使用snake_case表示变量、方法、宏和字段;大写字母表示类型;还有静力学和常数的尖叫声。请改用打印向量。另请参见。您希望如何将v传递给函数?作为价值?像您是否需要该函数来处理Vec,或者该函数是否足够?见@camccar在他对语法的评论之后,Shepmaster做了你的工作,研究了类似的问题,然后给了你3个不同相关问题的链接。这些人确实使stackoverflow值得使用;大写字母表示类型;还有静力学和常数的尖叫声。请改用打印向量。另请参见。您希望如何将v传递给函数?作为价值?像您是否需要该函数来处理Vec,或者该函数是否足够?见@camccar在他对语法的评论之后,Shepmaster做了你的工作,研究了类似的问题,然后给了你3个不同相关问题的链接。这些人使stackoverflow真正值得使用。
fn print_vector<T, D>(value: &[T])
where
    T: AsRef<[D]>,
    D: Debug,
{
    for slice in value {
        println!("{:?}", slice.as_ref())
    }
}