Я хотів би ініціалізувати вектор нулів із певним розміром, який визначається під час виконання.
У C це буде так:
int main(void)
{
uint size = get_uchar();
int A[size][size];
memset(A, 0, size*size*sizeof(int));
}
Ось допоміжна функція, яку я намагався писати в Rust, але я думаю, що синтаксис нарізки 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);
}
let mut shifts = vec![0; pattern.len()];
працює безпосередньо зараз ... На жаль. До цього у мене булоerror: expected
:, found
.` ../search.rs:17 zero_vec.push (0); `що не мало сенсу.