【发布时间】:2013-05-20 16:48:54
【问题描述】:
编者注:这个问题是在 Rust 1.0 之前提出的,并且问题中的一些断言在 Rust 1.0 中不一定正确。一些答案已更新以解决这两个版本。
我想创建一个向量,但我只知道我希望向量在运行时的大小。这就是我现在的做法(即创建一个空的、可变的向量,并向其中添加向量):
fn add_pairs(pairs: ~[int]) -> ~[int] {
let mut result : ~[int] = ~[];
let mut i = 0;
while i < pairs.len() {
result += ~[pairs[i] + pairs[i + 1]];
i += 2;
}
return result;
}
这就是我想做的事情(即,创建一个向量并将所有内容放入其中,而不是将大量向量添加在一起):
fn add_pairs(pairs: ~[int]) -> ~[int] {
let number_of_pairs = pairs.len() / 2;
let result : ~[int, ..number_of_pairs];
let mut i = 0;
while i < pairs.len() {
result[i] = pairs[2 * i] + pairs[2 * i + 1];
i += 1;
}
return result;
}
不幸的是,执行上述操作给了我类似的东西:
error: expected constant expr for vector length: Non-constant path in constant expr
let result: ~[int, ..number_of_pairs];
^~~~~~~~~~~~~~~~~~~~~~~~
我的印象是向量必须在编译时知道它们的大小(因此您需要将它们的大小设置为常数)。来自Java背景,我很困惑!有没有办法创建一个只有在运行时才知道大小的向量?
我正在使用 Rust 0.6。
【问题讨论】:
-
这是一个很好的问题,但考虑到从 Rust 0.6 到 1.0 的所有变化,现在已经过时了......
-
这段代码几乎无法识别为 Rust。与许多其他 1.0 之前的问题不同,这个问题现在几乎没用了。
标签: rust