У меня есть вектор чисел и я использую метод windows(2)
для создания итератора, который дает мне соседние пары. Например, вектор [1, 2, 3]
преобразуется в [1, 2], [2, 3]
. Я хочу использовать метод find
, чтобы найти фрагмент, который удовлетворяет определенному условию:
fn step(g: u64) -> Option<(u64, u64)> {
let prime_list: Vec<u64> = vec![2, 3, 5, 7]; //For example
if prime_list.len() < 2 {
return None;
}
let res = prime_list.windows(2).find(|&&[a, b]| b - a == g)?;
//...
None
}
Я получаю сообщение об ошибке:
error[E0005]: refutable pattern in function argument: `&&[]` not covered
--> src/lib.rs:6:43
|
6 | let res = prime_list.windows(2).find(|&&[a, b]| b - a == g)?;
| ^^^^^^^^ pattern `&&[]` not covered
Я не знаю, что это за ошибкаозначает: список не может содержать менее двух элементов, например. Может быть, параметр закрытия неправильный? Я пытался изменить это, но это ничего не изменило. a
и b
также правильно распознаются как u64
в моей IDE. Что здесь происходит?