1use crate::bytecode::Value;
8
9pub trait OutputSink: Send + Sync + std::fmt::Debug + 'static {
11 fn write(&self, values: &[Value]);
12}
13
14#[derive(Debug, Clone, Copy, Default)]
16pub struct NullSink;
17
18impl OutputSink for NullSink {
19 fn write(&self, _values: &[Value]) {}
20}
21
22#[derive(Debug, Clone, Copy, Default)]
24pub struct StdoutSink;
25
26impl OutputSink for StdoutSink {
27 fn write(&self, values: &[Value]) {
28 let mut first = true;
29 for value in values {
30 if !first {
31 print!(" ");
32 }
33 print!("{value}");
34 first = false;
35 }
36 println!();
37 }
38}