diff options
| author | Nathan Reiner <nathan@nathanreiner.xyz> | 2024-07-25 00:40:37 +0200 |
|---|---|---|
| committer | Nathan Reiner <nathan@nathanreiner.xyz> | 2024-07-25 00:40:37 +0200 |
| commit | 58b305b9f6d13007d2ea62775054c95177f81092 (patch) | |
| tree | 2123cb5379aa69476b1e549e0bcacc08d67fba71 /src/lua/iobuffer.rs | |
first sketch
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 +} |