[英]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!("");
}
}
我试过用String
、 str
和&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.