use crate::bytecode::Value;
pub trait OutputSink: Send + Sync + std::fmt::Debug + 'static {
fn write(&self, values: &[Value]);
}
#[derive(Debug, Clone, Copy, Default)]
pub struct NullSink;
impl OutputSink for NullSink {
fn write(&self, _values: &[Value]) {}
}
#[derive(Debug, Clone, Copy, Default)]
pub struct StdoutSink;
impl OutputSink for StdoutSink {
fn write(&self, values: &[Value]) {
let mut first = true;
for value in values {
if !first {
print!(" ");
}
print!("{value}");
first = false;
}
println!();
}
}