Ввод и вывод

Ввод с клавиатуры

Последнее обновление: 07.05.2021

Для считывания ввода с клавиатуры применяется структура std::io::Stdin. Чтобы получить объект этой структуры, используется метод std::io::stdin():

let handle: std::io::Stdin  = std::io::stdin();

Далее через полученный объект мы можем использовать ряд методов. Так, для считывания ввода в строку применяется метод read_line() из трейта BufRead:

pub fn read_line(&self, buf: &mut String) -> Result<usize>

Функция считывает все байты, пока не встретит символ перевода строки (байт 0xA) или пока не достигнет конца потока. После этого считанные байты добавляются в буфер. Считанные данные мы можем получить через второй параметр - ссылку на объект String, в которую считывается ввод

Если выполнение функции завершилось успешно, то она возвращает количество считанных байтов.

Если при считывании данных функция достигла конца файла (EOF), то она возвращает значение Ok(0).

Однако, если считываемые данные не представляют символы в кодировке UTF-8, то функция возвращает ошибку.

Например, считываем некоторые данные с консоли:

use std::io;

fn main()  -> io::Result<()>{
	
	let mut input = String::new();
	println!("Введите свое имя: ");
	io::stdin().read_line(&mut input)?;
	println!("Ваш имя: {}", input);
	
	Ok(())
}

В данном случае для получения введенных данных определяется переменная input, которая передается в метод read_line(). Для обработки возможной ошибки после вызова функции указываем оператор ?.

Консольный вывод:

Введите свое имя: 
Eugene
Ваше имя: Eugene
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850