我如何将一个2D字符串数组(未知尺寸)作为参数传递给Rust中的一个函数?

问题描述 投票:0回答:1

我有一个二维的Strings数组,我想把它作为参数传递给一个函数。我已经成功地用i32的二维数组做了这件事,但对于Strings,我没有运气。

下面是一个数组的例子。

let my_string_array_2d = [
  ["Two", "Arrays", "Of"],
  ["Three", "Strings", "Each"]
];

这是我用在一个二维i32数组上的函数。

fn print2DIntArray<Matrix: AsRef<[Row]>, Row: AsRef<[i32]>>(x: Matrix) {
    for row in x.as_ref() {
        for cell in row.as_ref() {
            print!("{} ", cell);
        }
        println!("");
    }
}

我试着把它替换成 i32String, str&str 运气不好。我不是一个Rust开发者,所以可能是我遗漏了一些简单的东西。

我知道我可以用固定的维度来做,但我试图找到一个通用的解决方案。

先谢谢你的帮助。

multidimensional-array rust
1个回答
1
投票

你的方向是对的--内部的项目是字符串切片,因此 &str 是正确的类型。然而你需要添加一个终身注解。

fn print_2d_int_array<'a, Matrix: AsRef<[Row]>, Row: AsRef<[&'a str]>>(x: Matrix)

Playground Link

在这种情况下,你可以把它变得更加通用:如果目标是能够打印矩阵,你只需要把单元格限制为 Display:

use std::fmt::Display;    

fn print_2d_int_array<Matrix: AsRef<[Row]>, Row: AsRef<[P]>, P: Display>(x: Matrix)
© www.soinside.com 2019 - 2024. All rights reserved.