При чтении входного потока с помощью read_line()
, если вы не следуете за оператором с помощью .expect()
, компилятор предупредит вас, что this `Result` may be an `Err` variant, which should be handled
.
Я хочу понять, что это за видситуации вызовет такую обработку ошибок.
Я попытался перенести мою программу в другую (./my_program | echo "hello"
), чтобы у меня не было возможности ввести какой-либо ввод, и якобы смог бы увидеть ошибкуобработка в действии.К моему удивлению, это фактически привело к состоянию паники:
thread 'main' panicked at 'failed printing to stdout: Broken pipe (os error 32)', src/libstd/io/stdio.rs:792:9
В этом коде из книги Язык программирования Rust мы указываем строку, в которую, как мне кажется,должен быть напечатан, когда программа не может прочитать входной поток:
use std::io;
fn main() {
println!("Guess the number!");
println!("Please input your guess.");
let mut guess = String::new();
io::stdin().read_line(&mut guess)
.expect("Failed to read line");
println!("You guessed: {}", guess);
}
Как я могу увидеть это поведение в действии?