diff options
Diffstat (limited to 'src/lua/iobuffer.rs')
| -rw-r--r-- | src/lua/iobuffer.rs | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/lua/iobuffer.rs b/src/lua/iobuffer.rs new file mode 100644 index 0000000..1150e0d --- /dev/null +++ b/src/lua/iobuffer.rs @@ -0,0 +1,38 @@ +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<S>(&mut self, value: S) + where + S: AsRef<str> + { + self.buffer += value.as_ref(); + } + + pub fn writeln<S>(&mut self, value: S) + where + S: AsRef<str> + { + self.buffer += value.as_ref(); + self.buffer += "\n"; + } +} + +static STDOUT_BUFFER: RwLock<IoBuffer> = RwLock::new(IoBuffer::new()); + +pub fn iobuffer() -> &'static RwLock<IoBuffer> { + &STDOUT_BUFFER +} |