Метод write_all
Метод write_all принадлежит трейту Write и
используется для записи всех байтов из переданного буфера
в выходной поток. В отличие от метода write, который
может записать лишь часть данных и вернуть количество
записанных байтов, write_all продолжает вызывать
write до тех пор, пока не будут записаны все байты
из буфера или пока не произойдёт ошибка. Параметром метод
принимает срез байтов &[u8], который нужно записать.
Метод возвращает Result<(), Error>: Ok(())
при успешной записи всех байтов и Err в случае
возникновения ошибки ввода-вывода.
Синтаксис
write.write_all(buf)
Пример
Давайте запишем строку "abcde" в стандартный поток
вывода с помощью метода write_all:
use std::io::Write;
fn main()
{
let mut stdout = std::io::stdout();
let res = stdout.write_all(b"abcde");
println!("{:?}", res);
}
Результат выполнения кода:
abcdeOk(())
Пример
Давайте запишем несколько строк в вектор байтов с помощью
метода write_all:
use std::io::Write;
fn main()
{
let mut buf = Vec::new();
buf.write_all(b"12345").unwrap();
buf.write_all(b"abcde").unwrap();
let res = String::from_utf8(buf).unwrap();
println!("{}", res);
}
Результат выполнения кода:
"12345abcde"
Пример
Давайте обработаем результат записи в файл с помощью
метода write_all и конструкции match:
use std::io::Write;
fn main()
{
let mut buf = Vec::new();
let res = buf.write_all(b"abcde");
match res
{
Ok(()) => println!("write ok"),
Err(e) => println!("write error: {}", e),
}
}
Результат выполнения кода:
"write ok"