Повторение — Валидатор профиля пользователя
Часть раздела Logic & Flow путешествия по Rust на Coddy — урок 65 из 66.
Задание
ЛегкоВы получите три входных значения, представляющих профиль пользователя. Первое значение — это имя пользователя, второе — возраст, а третье — адрес электронной почты. Проверьте профиль в соответствии со следующими правилами и выведите соответствующее сообщение:
Правила валидации:
- Имя пользователя должно содержать не менее 3 символов
- Возраст должен быть от 13 до 120 (включительно)
- Email должен содержать символ
@
Требования:
- Считайте ввод имени пользователя и удалите лишние пробелы (trim)
- Считайте ввод возраста, удалите лишние пробелы и преобразуйте его в
i32 - Считайте ввод email и удалите лишние пробелы
- Проверьте, что длина имени пользователя составляет не менее 3 символов
- Проверьте, находится ли возраст в диапазоне от 13 до 120 (используйте
matchс диапазонами) - Проверьте, содержит ли email символ
@(используйте метод.contains()) - Если все проверки пройдены, выведите:
Valid profile - Если имя пользователя слишком короткое, выведите:
Invalid username - Если возраст вне диапазона, выведите:
Invalid age - Если email не содержит
@, выведите:Invalid email - Выполняйте проверки по порядку: сначала имя пользователя, затем возраст, затем email
Ввод:
- Первая строка: Имя пользователя (например,
alice123) - Вторая строка: Возраст (например,
25) - Третья строка: Адрес электронной почты (например,
alice@example.com)
Вывод:
- Одно из:
Valid profile,Invalid username,Invalid ageилиInvalid email
Попробуйте сами
use std::io;
fn main() {
// Чтение имени пользователя
let mut username = String::new();
io::stdin().read_line(&mut username).expect("Failed to read line");
let username = username.trim();
// Чтение возраста
let mut age_input = String::new();
io::stdin().read_line(&mut age_input).expect("Failed to read line");
let age: i32 = age_input.trim().parse().expect("Failed to parse age");
// Чтение email
let mut email = String::new();
io::stdin().read_line(&mut email).expect("Failed to read line");
let email = email.trim();
// TODO: Напишите ниже код для валидации профиля
// Проверьте длину имени пользователя, возрастной диапазон и формат email
// Выведите соответствующее сообщение на основе результатов валидации
}Все уроки раздела 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Проект: Простой инвентарь товаров
Настройка проектаДобавление товараПроверка наличияПродажа товараСобираем всё воедино11Финальные испытания
Повторение — Уникальные элементыПовторение — Валидатор профиля пользователяПовторение — Сводка оценок3Список дел в командной строке
Настройка проектаДобавление задачиПросмотр всех задачУдаление задачиИтоговый код6Обработка отсутствия значения с 'Option'
Что такое 'Option'?Использование 'match' с 'Option'is_some() и is_none()Распаковка 'Option'Метод expectЗначение по умолчанию: unwrap_orИтоги: поиск элемента