Просмотр всех задач
Часть раздела Logic & Flow путешествия по Rust на Coddy — урок 17 из 66.
Задание
ЛегкоВы получите два входных значения: во-первых, список существующих задач, разделенных запятыми, и во-вторых, номер задачи для просмотра (индексация начинается с 1). Прочитайте оба входных значения, создайте вектор из задач и выведите все задачи с их номерами, выделив запрошенную задачу.
Требования:
- Прочитайте первую строку ввода, содержащую описания задач, разделенные запятыми (например,
Buy groceries,Call dentist,Finish homework) - Разделите строку по запятым, чтобы получить отдельные задачи
- Создайте вектор и добавьте в него каждую задачу
- Прочитайте вторую строку ввода и преобразуйте ее в целое число (номер задачи для выделения, используя индексацию с 1)
- Выведите общее количество задач в формате:
Total tasks: X - Переберите вектор и выведите каждую задачу с ее номером (начиная с 1)
- Для запрошенного номера задачи выведите ее в формате:
[X] [task description] (selected) - Для всех остальных задач выведите их в формате:
[X] [task description]
Ввод:
- Первая строка: Описания задач через запятую (например,
Buy groceries,Call dentist,Finish homework) - Вторая строка: Целое число, представляющее номер задачи для выделения (индексация с 1)
Вывод:
- Первая строка:
Total tasks: X, где X — общее количество задач - Последующие строки: Каждая задача с ее номером в формате
[X] [task description] - К выбранной задаче должно быть добавлено
(selected)
Попробуйте сами
use std::io::{self, BufRead};
fn main() {
let stdin = io::stdin();
let mut lines = stdin.lock().lines();
// Прочитать задачи, разделенные запятыми
let tasks_input = lines.next().unwrap().unwrap();
// Прочитать номер задачи для выделения
let task_number: usize = lines.next().unwrap().unwrap().trim().parse().unwrap();
// TODO: Напишите свой код ниже
// Разделить tasks_input по запятым и создать вектор
// Вывести общее количество задач
// Перебрать задачи и вывести каждую с её номером
// Выделить выбранную задачу, добавив " (selected)"
}Все уроки раздела Logic & Flow
1Продвинутое управление потоком выполнения
Выражение 'match'Сопоставление нескольких значенийСопоставление диапазоновВыражение 'if let'Циклы как выраженияИтоги — Простой парсер команд4Группировка данных с помощью структур
Что такое структура?Обзор структурДоступ к полям структурыИзменяемые структурыСтруктуры как параметры функцийКортежные структурыИтоги: создание структуры Book7Обработка ошибок с помощью 'Result'
Что такое 'Result'?Использование 'match' с 'Result'is_ok() и is_err()Сокращения: unwrap и expectОператор вопросительного знака '?'Парсинг строк в числаИтоги: функция безопасного деления10Замыкания и анонимные функции
Что такое замыкание?Определение простого замыканияЗамыкания с параметрамиЗахват окруженияИтоги: Простое замыкание-сумматор2Введение в векторы
Что такое вектор?Создание вектораДобавление элементов с помощью pushДоступ к элементам вектораИтерация по векторуИзменяемая итерацияУдаление элементовИтоги — Простой счетчик очков5Пары «ключ-значение» в Hash Map
Что такое Hash Map?Создание Hash MapВставка пар «ключ-значение»Доступ к значениямИтерация по Hash MapОбновление значенияУдаление парыИтоги — Счетчик слов8Проект: Простой инвентарь товаров
Настройка проектаДобавление товараПроверка наличияПродажа товараСобираем всё воедино3Список дел в командной строке
Настройка проектаДобавление задачиПросмотр всех задачУдаление задачиИтоговый код6Обработка отсутствия значения с 'Option'
Что такое 'Option'?Использование 'match' с 'Option'is_some() и is_none()Распаковка 'Option'Метод expectЗначение по умолчанию: unwrap_orИтоги: поиск элемента