Метод skip_while
Метод skip_while создаёт новый итератор,
который пропускает элементы исходного итератора
до тех пор, пока переданный предикат возвращает
true. Как только предикат вернёт false,
метод прекращает пропускать элементы и начинает
возвращать все оставшиеся элементы, включая тот,
на котором предикат вернул false.
Параметром метод принимает замыкание-предикат,
которое получает ссылку на очередной элемент
и возвращает bool.
Важно понимать, что skip_while проверяет
предикат только до первого false. После этого
предикат больше не вызывается, и все последующие
элементы возвращаются без проверки.
Синтаксис
iter.skip_while(predicate)
Пример
Давайте пропустим элементы вектора vec![1, 2, 3, 4, 5],
пока они меньше 3:
fn main()
{
let res: Vec<i32> = vec![1, 2, 3, 4, 5]
.into_iter()
.skip_while(|&x| x < 3)
.collect();
println!("{:?}", res);
}
Результат выполнения кода:
[3, 4, 5]
Пример
Давайте пропустим элементы вектора vec![1, 2, 3, 4, 5],
пока они меньше 10. Так как все элементы меньше
10, результирующий итератор окажется пустым:
fn main()
{
let res: Vec<i32> = vec![1, 2, 3, 4, 5]
.into_iter()
.skip_while(|&x| x < 10)
.collect();
println!("{:?}", res);
}
Результат выполнения кода:
[]
Пример
Давайте пропустим элементы вектора vec![1, 2, 3, 4, 5],
пока они меньше 0. Так как первый же элемент
не удовлетворяет условию, ни один элемент не будет
пропущен:
fn main()
{
let res: Vec<i32> = vec![1, 2, 3, 4, 5]
.into_iter()
.skip_while(|&x| x < 0)
.collect();
println!("{:?}", res);
}
Результат выполнения кода:
[1, 2, 3, 4, 5]
Пример
Давайте пропустим строки вектора
vec!["abcde", "12345", "hello", "world"],
пока их длина меньше 6:
fn main()
{
let res: Vec<&str> = vec!["abcde", "12345", "hello", "world"]
.into_iter()
.skip_while(|s| s.len() < 6)
.collect();
println!("{:?}", res);
}
Результат выполнения кода:
["hello", "world"]
Смотрите также
-
метод
skip,
который пропускает заданное количество элементов итератора -
метод
take_while,
который берёт элементы, пока предикат возвращает true -
метод
filter,
который оставляет только элементы, удовлетворяющие предикату -
метод
map_while,
который преобразует элементы, пока предикат возвращает true