glowdust 0.0.1

A DBMS with a data model based on functions and pattern matching
Documentation
use crate::compiler::value::values::Value;

pub trait Sink {
    fn accept(&mut self, row: &[Value]);
}

#[derive(Default)]
pub struct PrintingSink {}

impl Sink for PrintingSink {
    fn accept(&mut self, row: &[Value]) {
        print!("[");
        for (position, value) in row.iter().enumerate() {
            print!("{}", value);
            if position < row.len() - 1 {
                print!(", ")
            }
        }
        println!("]");
    }
}

#[derive(Default)]
pub struct AccumulatingSink {
    pub storage: Vec<Vec<Value>>,
}

impl Sink for AccumulatingSink {
    fn accept(&mut self, row: &[Value]) {
        self.storage.push(row.to_vec())
    }
}

impl AccumulatingSink {
    pub fn clear(&mut self) {
        self.storage.clear();
    }
}