Записки о Rust

@channel_rust_language
Фото Сегодня тема: ввод с клавиатуры. Две не большие программки. Одна - это просто ввод с клавиатуры строки, другая ввод с клавиатуры с последующей попыткой преобразовать строку в целое число. use std::io; fn main() { let mut input = String::new(); // строка для ввода println!("Введите ваше имя:");. // ввод с клавиатуры с проверкой ошибки с дописывания строки input match io::stdin().read_line(&mut input) { Ok(n) => { println!("Всего {} байтов", n); let mut input = "Привет ".to_string() + &input.trim() + &"!".to_string(); println!("{}", input); } Err(error) => { println!("Ошибка при чтении: {}", error); } } } И так io::stdin().read_line(&mut input) ввод строки с клавиатуры. Тут важно отметить, метод read_line() добавляет символы в строку, не очищая её. Поэтому нужно использовать для этой цели пустую строку. У нас она просто создаётся для этой цели. Второе. Этот метод возвращает тип перечисление (enum). Поэтому мы используем match. В зависимости от результата иы выполняем то или иное действие. Да и не забудем про библиотеку std::io, она нужна для read_line(). В следующем примере мы вводим строку, а потом пытаемся преобразовать её в число. Поэтому у нас вложенные операторы match. use std::io; use std::process; fn main() { let mut input = String::new(); // пустая строка match io::stdin().read_line(&mut input) { Ok(_) => { // преобразовать строку в число let number: i32 = match input.trim().parse() { Ok(num) => num, Err(_) => { println!("Вы ввели некорректное значение!"); process::exit(1); // завершаем программу с кодом 1 } }; } Err(error) => { println!("Ошибка при чтении: {}", error); } } } Внутренний match реагирует на ситуацию когда строка не может быть преобразована в число. В этом случае программа заканчивает своё выполнение через использование process::exit(1) - код выхода 1. Чтобы использовать этот метод мы подключили библиотеку std::process. Конечно, то что я здесь представил, надо бы обернуть в функции. Т.е. создать свою библиотечку, которую можно использовать в разных приложениях. Но об этом поговорим в одном из следующих постов. Не забывайте, что оглавление по моим постам можно найти здесь https://dzen.ru/a/aq_S5YWcNkgWfHcO Оглавление тематическое, а на канале здесь темы идут не по порядку.
Если у вас установлено приложение,
вы можете сразу перейти в канал