partiql/
models.rs

1use std::fmt;
2
3#[derive(Debug, Clone, PartialEq)]
4pub struct Atom {
5    data: u64,
6}
7
8impl From<u64> for Atom {
9    fn from(v: u64) -> Self {
10        Self { data: v }
11    }
12}
13
14impl fmt::Display for Atom {
15    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
16        writeln!(f, "{{");
17        writeln!(f, "  '_1': {},", self.data);
18        writeln!(f, "}}");
19        Ok(())
20    }
21}
22
23#[derive(Debug, Clone, PartialEq)]
24pub struct Array {
25    data: Vec<Atom>,
26}
27
28impl From<&[u64]> for Array {
29    fn from(v: &[u64]) -> Self {
30        Self {
31            data: v.to_vec().into_iter().map(Atom::from).collect::<Vec<_>>(),
32        }
33    }
34}
35
36impl fmt::Display for Array {
37    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
38        writeln!(f, "<<");
39        for atom in self.data.iter() {
40            writeln!(f, "  {},", atom);
41        }
42        writeln!(f, ">>");
43        Ok(())
44    }
45}