Макрос write!
Макрос write! выполняет форматирование строки
по заданному шаблону и записывает результат
в переданный поток вывода. Первым параметром
макрос принимает получателя записи, вторым -
строку формата, а далее - значения для подстановки.
Макрос возвращает значение типа Result,
которое показывает, прошла ли запись успешно.
Синтаксис
write!(writer, "format string", args...)
Пример
Давайте запишем форматированную строку в вектор
Vec<u8> с помощью макроса write!:
use std::io::Write;
fn main()
{
let mut buf = Vec::new();
let res = write!(buf, "value: {}", 12345);
println!("{:?}", res);
println!("{:?}", String::from_utf8(buf).unwrap());
}
Результат выполнения кода:
Ok(())
"value: 12345"
Пример
Давайте запишем строку в буферизованный поток
BufWriter и затем выведем содержимое файла:
use std::io::Write;
use std::fs::File;
use std::io::BufWriter;
fn main()
{
let file = File::create("test.txt").unwrap();
let mut writer = BufWriter::new(file);
let res = write!(writer, "abcde {}", 12345);
println!("{:?}", res);
writer.flush().unwrap();
}
Результат выполнения кода:
Ok(())
Пример
Давайте запишем несколько значений в вектор, используя позиционные аргументы:
use std::io::Write;
fn main()
{
let mut buf = Vec::new();
write!(buf, "{0} {1} {0}", "abcde", 12345).unwrap();
println!("{:?}", String::from_utf8(buf).unwrap());
}
Результат выполнения кода:
"abcde 12345 abcde"