Я бы хотел инициализировать вектор нулей с определенным размером, который определяется во время выполнения.
В C это будет выглядеть так:
int main(void)
{
uint size = get_uchar();
int A[size][size];
memset(A, 0, size*size*sizeof(int));
}
Вот вспомогательная функция, которую я пробовал писать в Rust, но я думаю, что синтаксис slicing 0..size
нарушает компилятор. Кроме того, он выглядит более подробным, чем версия C. Есть ли более идиоматический способ сделать это?
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;
}
Я клянусь, что старые документы использовали метод from_elem()
здесь и ни одна из перестановок [0 ; size]
обозначение, похоже, работает
Я хотел бы вставить это в алгоритм поиска подстроки в конечном итоге:
pub fn kmp(text: &str, pattern: &str) -> i64 {
let mut shifts = zeros(pattern.len()+1);
}