use std::io::Write;
pub trait Host: Send + Sync {
fn output(&mut self) -> impl Write;
fn error(&mut self) -> impl Write;
fn exit(&mut self, code: i32);
}
#[cfg(test)]
pub struct TestHost {
pub output_buf: Vec<u8>,
pub error_buf: Vec<u8>,
}
#[cfg(test)]
impl TestHost {
pub fn new() -> Self {
Self {
output_buf: Vec::new(),
error_buf: Vec::new(),
}
}
}
#[cfg(test)]
impl Host for TestHost {
fn output(&mut self) -> impl Write {
std::io::Cursor::new(&mut self.output_buf)
}
fn error(&mut self) -> impl Write {
std::io::Cursor::new(&mut self.error_buf)
}
fn exit(&mut self, _code: i32) {
}
}