Ответ 1
Из документации для read_line
:
В случае успеха эта функция вернет общее количество прочитанных байтов.
Если эта функция возвращает
Ok(0)
, поток достиг EOF.
Это означает, что мы можем проверить успешное значение нуля:
use std::io::{self, BufRead};
fn main() -> io::Result<()> {
let mut empty: &[u8] = &[];
let mut buffer = String::new();
let bytes = empty.read_line(&mut buffer)?;
if bytes == 0 {
println!("EOF reached");
}
Ok(())
}