Метод flush
Метод flush принудительно записывает все данные,
находящиеся в буфере, в целевой поток ввода-вывода.
Он относится к типажу Write и возвращает значение
типа io::Result<()>. Если запись прошла успешно,
возвращается Ok(()), в противном случае -
Err с описанием ошибки. Параметров метод не принимает.
Метод особенно полезен при работе с буферизованными
потоками, например BufWriter, когда нужно
гарантировать, что данные немедленно попадут в
подлежащий поток, не дожидаясь заполнения буфера
или закрытия программы.
Синтаксис
writer.flush()
Пример
Давайте запишем строку в буферизованный поток
и принудительно сбросим буфер с помощью метода
flush:
use std::io::Write;
fn main()
{
let mut buffer = Vec::new();
buffer.write_all(b"abcde").unwrap();
buffer.flush().unwrap();
println!("{:?}", String::from_utf8(buffer).unwrap());
}
Результат выполнения кода:
"abcde"
Пример
Давайте используем BufWriter и вызовем
flush, чтобы убедиться, что данные записаны
в стандартный поток вывода:
use std::io::{BufWriter, Write, stdout};
fn main()
{
let stdout = stdout();
let mut writer = BufWriter::new(stdout.lock());
writer.write_all(b"12345").unwrap();
writer.flush().unwrap();
}
Результат выполнения кода:
12345