Я хочу создать вектор, но я знаю только размер, который я хочу, чтобы вектор находился во время выполнения. Вот как я делаю это сейчас (т.е. Создавая пустой, изменяемый вектор и добавляя к нему векторы):
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.