use alloc::string::String;
use alloc::vec::Vec;
use crate::fmt;
#[derive(Default)]
pub struct VecWriter {
line_buffer: String,
target: Vec<String>,
}
impl VecWriter {
pub fn new() -> Self {
Self::default()
}
pub fn as_formatter<'a>(&'a mut self, config: &'a fmt::Config) -> fmt::Formatter<'a> {
fmt::Formatter::new(self, config)
}
pub fn into_vec(mut self) -> Vec<String> {
self.target.push(self.line_buffer);
self.target
}
}
impl core::fmt::Write for VecWriter {
#[inline(always)]
fn write_char(&mut self, c: char) -> core::fmt::Result {
self.line_buffer.write_char(c)
}
#[inline(always)]
fn write_str(&mut self, s: &str) -> core::fmt::Result {
self.line_buffer.write_str(s)
}
}
impl fmt::Write for VecWriter {
#[inline(always)]
fn write_line(&mut self, _: &fmt::Config) -> fmt::Result {
self.target.push(self.line_buffer.clone());
self.line_buffer.clear();
Ok(())
}
fn write_trailing_line(&mut self, _: &fmt::Config) -> fmt::Result {
Ok(())
}
}