Ich möchte einen Vektor von Nullen mit einer bestimmten Größe initialisieren, die zur Laufzeit festgelegt wird.
In C wäre es wie:
int main(void)
{
uint size = get_uchar();
int A[size][size];
memset(A, 0, size*size*sizeof(int));
}
Hier ist die Hilfsfunktion, die ich versucht habe, in Rust zu schreiben, aber ich denke, die Slicing-Syntax 0..sizebeleidigt den Compiler. Außerdem sieht es ausführlicher aus als die C-Version. Gibt es einen idiomatischeren Weg, dies zu tun?
fn zeros(size: u32) -> Vec<i32> {
let mut zero_vec: Vec<i32> = Vec::with_capacity(size);
for i in 0..size {
zero_vec.push(0);
}
return zero_vec;
}
Ich schwöre, dass die alten Dokumente hier eine from_elem()Methode erklärt haben und keine der Permutationen der [0 ; size] Notation zu funktionieren scheint
Ich möchte dies letztendlich in einen Teilstring-Suchalgorithmus einfügen:
pub fn kmp(text: &str, pattern: &str) -> i64 {
let mut shifts = zeros(pattern.len()+1);
}
let mut shifts = vec![0; pattern.len()];arbeite jetzt direkt ... Ups. Vorher hatte ich einerror: expected:, found.` ../search.rs:17 zero_vec.push (0); `was keinen Sinn ergab.