use std::sync::RwLock; pub struct IoBuffer { buffer: String, } impl IoBuffer { const fn new() -> Self { Self { buffer: String::new(), } } pub fn get(&self) -> String { self.buffer.clone() } pub fn write(&mut self, value: S) where S: AsRef { self.buffer += value.as_ref(); } pub fn writeln(&mut self, value: S) where S: AsRef { self.buffer += value.as_ref(); self.buffer += "\n"; } } static STDOUT_BUFFER: RwLock = RwLock::new(IoBuffer::new()); pub fn iobuffer() -> &'static RwLock { &STDOUT_BUFFER }