Трейт Write
Трейт Write определяет методы для записи
байтов и форматированных строк в источник вывода.
Он является основой для таких типов, как
stdout, File, String и других.
Основной метод write_fmt принимает
объект Arguments, который создаётся
макросами форматирования, например format_args!.
Также трейт предоставляет методы write,
write_all и flush для работы
с байтовыми данными и синхронизации вывода.
Синтаксис
use std::fmt::Write;
writer.write_fmt(format_args!("..."))?;
writer.write(b"...")?;
writer.write_all(b"...")?;
writer.flush()?;
Пример
Давайте запишем форматированную строку
в String с помощью трейта Write:
use std::fmt::Write;
fn main()
{
let mut res = String::new();
write!(res, "value = {}", 12345).unwrap();
println!("{}", res);
}
Результат выполнения кода:
"value = 12345"
Пример
Давайте запишем несколько форматированных строк
в String последовательно:
use std::fmt::Write;
fn main()
{
let mut res = String::new();
write!(res, "abcde").unwrap();
write!(res, " ").unwrap();
write!(res, "12345").unwrap();
println!("{}", res);
}
Результат выполнения кода:
"abcde 12345"
Пример
Давайте используем метод write_fmt
напрямую с макросом format_args!:
use std::fmt::Write;
fn main()
{
let mut res = String::new();
res.write_fmt(format_args!("{} + {} = {}", 2, 3, 5)).unwrap();
println!("{}", res);
}
Результат выполнения кода:
"2 + 3 = 5"