编者按:此问题早于Rust0.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]));
}
4条答案
按热度按时间kknvjkwl1#
你可以使用宏
vec!
来创建二维矢量。jjhzyzn02#
你是否打算让所有的子数组的长度都是2,就像这个例子中一样?在这种情况下,参数的类型不应该是
&[u8]
,这是u8的借用数组,而是&[[u8; 2]]
。o0lyfsai3#
如果要操作的函数是你自己的,你可以创建一个自定义结构体,使用helper方法将vector视为2d:
相关函数
new
创建了Vec2d
,有两个主要的方法(index
和index_mut
,所以你可以得到一个借用的索引值immut或mut),并添加了一个Display
trait以更好地可视化它(但它存储为Vec<>
)。qhhrdooz4#
使用类型注解