Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗rsSpPrIt 284 of 288 menu
◀ ▶

Практика на итераторы в Rust

В этих задачах потренируем ручной обход с пустым ответом, связанный тип элемента и обертку, которая меняет значение на лету. Пустой шаг обрабатывайте через match или if let.

Дана структура:

struct Range { cur: i32, stop: i32, }

Реализуйте обход от cur до stop не включая верхнюю границу. Выведите числа для Range { cur: 1, stop: 4 } в цикле for.

Дана структура:

struct Step { v: i32, step: i32, }

Сделайте обход, который прибавляет step, пока значение не превысит 10. Пройдите вручную через сопоставление и напечатайте все элементы для Step { v: 2, step: 3 }.

Даны структуры:

struct Range { cur: i32, stop: i32, } struct Double<I> { inner: I, }

Напишите адаптер Double, который удваивает каждый элемент внутреннего обхода. Проверьте на счетчике от нуля до трех и выведите все значения.

Дана структура:

struct Take<I> { inner: I, left: u32, }

Отдайте не больше left элементов из внутреннего обхода i32, затем завершите обход. Свяжите с обходом диапазона и покажите вывод при left: 2.

Дан список:

let nums = vec![1, 2, 3, 4];

Через цепочку адаптеров оставьте только четные числа, прибавьте единицу каждому и перенесите результат в новый вектор. Выведите его содержимое.

Дана строка:

let line = "a-b-c";

Разрежьте по дефису, превратите каждый кусок в верхний регистр и соберите результат в вектор строк. Напечатайте его длину и первый элемент.

Дана структура:

struct FilterPos<I> { inner: I, }

Адаптер пропускает только положительные i32. Подключите к вектору vec![-1, 2, 0, 5], пройдите вручную и выведите отобранные числа.

Дано число:

let num = 3;

Соберите обход, который выдает квадраты от 1 до этого литерала включительно. Сложите элементы в одно число через свой цикл и выведите сумму.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить