繁体   English   中英

如何将二维字符串数组(未知维度)作为参数传递给 Rust 中的 function

[英]How can I pass a 2D String array (unknown dimensions) as a parameter to a function in Rust

我有一个二维字符串数组,我试图将它作为参数传递给 function。 我成功地用 i32 的 2D 数组做到了这一点,但使用字符串我没有运气。

一个示例数组:

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

这是我用于 i32 的二维数组的 function:

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!("");
    }
}

我试过用Stringstr&str替换i32 ,但没有成功。 我不是 Rust 开发人员,所以我可能缺少一些简单的东西。

我知道我可以用固定的尺寸来做,但我正在尝试找到一个通用的解决方案。

提前感谢您的帮助。

你在正确的轨道上 - 内部项目是字符串切片,所以&str是正确的类型。 但是,您需要添加生命周期注释:

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

游乐场链接

在这种情况下,您可以使其更加通用:如果目标是能够打印矩阵,您只需将单元格限制为Display

use std::fmt::Display;    

fn print_2d_int_array<Matrix: AsRef<[Row]>, Row: AsRef<[P]>, P: Display>(x: Matrix)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM