在Rust的二维矢量

时间:2012-10-27 18:09:32

标签: vector rust mutable rust-obsolete

  

编者注:此问题早于Rust 0.1 (标记为2013-07-03),并且在语法上不是有效的Rust 1.0代码。答案可能仍包含有价值的信息。

有没有人知道如何在Rust中创建可变的二维向量并将它们传递给要操作的函数?

这是我到目前为止所尝试的:

extern crate std;

fn promeni(rec: &[u8]) {
    rec[0][1] = 0x01u8;
}

fn main() {
    let mut rec = ~[[0x00u8,0x00u8],
        [0x00u8,0x00u8]
    ];
    io::println(u8::str(rec[0][1]));
    promeni(rec);
    io::println(u8::str(rec[0][1]));
}

2 个答案:

答案 0 :(得分:7)

您可以使用宏vec!创建2d向量。

fn test(vec: &mut Vec<Vec<char>>){
    vec[0][0] = 'd';
    ..//
    vec[23][79] = 'd';
}

fn main() {

    let mut vec = vec![vec!['#'; 80]; 24];

    test(&mut vec);
}

答案 1 :(得分:3)

您是否打算所有子阵列的长度都为2,如本例所示?在这种情况下,参数的类型不应该是&[u8],这是u8的借来的数组,而是&[[u8; 2]]