Chcę utworzyć wektor, ale znam tylko rozmiar, który chcę, aby wektor był w czasie wykonywania. Jest to, jak robię to teraz (czyli tworzenie pustego, zmienny wektor, wektorów i dodanie do niego):Tworzenie wektora o stałej długości
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;
}
ten sposób chcę to zrobić (tj, tworząc wektor i oddanie wszystko to, zamiast dodawania razem wiele wektorów):
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;
}
Niestety, robiąc powyższe daje mi coś takiego:
error: expected constant expr for vector length: Non-constant path in constant expr
let result: ~[int, ..number_of_pairs];
^~~~~~~~~~~~~~~~~~~~~~~~
mam wrażenie, że wektory muszą mieć ich wielkość znany podczas kompilacji t ime (a więc musisz ustawić ich rozmiar na stałą wartość). Pochodzę z tła Java, jestem zdezorientowany! Czy istnieje sposób na stworzenie wektora, którego rozmiar znasz tylko w czasie wykonywania?
Używam Rust 0.6.
To było dobre zadanie, ale teraz jest już dość przestarzałe, biorąc pod uwagę wszystkie zmiany z rdzy 0.6 do 1.0 ... – poolie