diff options
| author | Nathan Reiner <nathan@nathanreiner.xyz> | 2024-12-07 17:17:22 +0100 |
|---|---|---|
| committer | Nathan Reiner <nathan@nathanreiner.xyz> | 2024-12-07 17:17:22 +0100 |
| commit | c0598823335cfdc6deb5c48fe1ead8ecea18097e (patch) | |
| tree | 561b47f9f459b9633c4244c3a0cabe12a44859c1 /src/lua/iobuffer.rs | |
| parent | 53a9172bddbb83a1c570cc3fed794e7b73c1f1d7 (diff) | |
add error type to iobuffer
Diffstat (limited to 'src/lua/iobuffer.rs')
| -rw-r--r-- | src/lua/iobuffer.rs | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/src/lua/iobuffer.rs b/src/lua/iobuffer.rs index 1150e0d..baab111 100644 --- a/src/lua/iobuffer.rs +++ b/src/lua/iobuffer.rs @@ -1,33 +1,38 @@ use std::sync::RwLock; +#[derive(Clone)] +pub enum BufferChunk { + StdOut(String), + StdErr(String), +} + pub struct IoBuffer { - buffer: String, + buffer: Vec<BufferChunk>, } impl IoBuffer { const fn new() -> Self { Self { - buffer: String::new(), + buffer: Vec::new(), } } - pub fn get(&self) -> String { + pub fn get(&self) -> Vec<BufferChunk> { self.buffer.clone() } - pub fn write<S>(&mut self, value: S) + pub fn print<S>(&mut self, value: S) where - S: AsRef<str> + S: std::string::ToString { - self.buffer += value.as_ref(); + self.buffer.push(BufferChunk::StdOut(value.to_string())) } - pub fn writeln<S>(&mut self, value: S) + pub fn error<S>(&mut self, value: S) where - S: AsRef<str> + S: std::string::ToString { - self.buffer += value.as_ref(); - self.buffer += "\n"; + self.buffer.push(BufferChunk::StdErr(value.to_string())) } } |