Метод read_line
Метод read_line принадлежит классу Stdin и читает одну строку из стандартного ввода (обычно с клавиатуры), записывая её в переданную изменяемую строку. Параметром метод принимает изменяемую ссылку на строку &mut String, в которую будет записан введённый текст вместе с символом перевода строки. Метод возвращает значение типа Result<usize>, где usize - количество прочитанных байт, а ошибка возникает при неудачном чтении.
Синтаксис
std::io::stdin().read_line(&mut buffer)
Пример
Давайте прочитаем строку, введённую пользователем, и выведем её на экран:
use std::io;
fn main()
{
let mut buffer = String::new();
io::stdin().read_line(&mut buffer).unwrap();
println!("You entered: {}", buffer.trim());
}
Если пользователь введёт "abcde" и нажмёт Enter, результат выполнения кода будет таким:
You entered: abcde
Пример
Давайте посчитаем количество байт, прочитанных методом read_line, и выведем это значение:
use std::io;
fn main()
{
let mut buffer = String::new();
let res = io::stdin().read_line(&mut buffer).unwrap();
println!("Bytes read: {}", res);
}
Если пользователь введёт "12345" и нажмёт Enter, результат выполнения кода будет таким:
Bytes read: 6
Пример
Давайте прочитаем несколько строк подряд в цикле и выведем их с нумерацией:
use std::io;
fn main()
{
let mut counter = 0;
loop {
let mut buffer = String::new();
io::stdin().read_line(&mut buffer).unwrap();
if buffer.trim() == "stop" {
break;
}
counter += 1;
println!("{}: {}", counter, buffer.trim());
}
}
Если пользователь последовательно введёт "abcde", "12345" и "stop", результат выполнения кода будет таким:
1: abcde
2: 12345