diff options
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())) } } |