rsql_formatters/writers/
stdout.rs

1use crate::writers::writer::Writer;
2use std::fmt::Display;
3use std::io::{Result, Write, stdout};
4
5#[derive(Debug, Default)]
6pub struct StdoutWriter;
7
8impl Write for StdoutWriter {
9    fn write(&mut self, buf: &[u8]) -> Result<usize> {
10        stdout().write(buf)
11    }
12
13    fn flush(&mut self) -> Result<()> {
14        stdout().flush()
15    }
16}
17
18impl Display for StdoutWriter {
19    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
20        write!(f, "stdout")
21    }
22}
23
24impl Writer for StdoutWriter {}
25
26#[cfg(test)]
27mod tests {
28    use super::*;
29
30    #[test]
31    fn test_writer() -> anyhow::Result<()> {
32        let mut writer = StdoutWriter;
33        writer.write_all(b"Hello, world!")?;
34        writer.flush()?;
35        assert_eq!(writer.to_string(), "stdout");
36        Ok(())
37    }
38}