summaryrefslogtreecommitdiff
path: root/src/lua/iobuffer.rs
diff options
context:
space:
mode:
authorNathan Reiner <nathan@nathanreiner.xyz>2024-12-07 17:17:22 +0100
committerNathan Reiner <nathan@nathanreiner.xyz>2024-12-07 17:17:22 +0100
commitc0598823335cfdc6deb5c48fe1ead8ecea18097e (patch)
tree561b47f9f459b9633c4244c3a0cabe12a44859c1 /src/lua/iobuffer.rs
parent53a9172bddbb83a1c570cc3fed794e7b73c1f1d7 (diff)
add error type to iobuffer
Diffstat (limited to 'src/lua/iobuffer.rs')
-rw-r--r--src/lua/iobuffer.rs25
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()))
}
}