use crate::sql::thing::Thing; use crate::sql::value::Value; use std::borrow::Cow; #[derive(Clone, Debug, Default, Eq, PartialEq)] pub struct Document<'a> { pub(super) id: Option, pub(super) current: Cow<'a, Value>, pub(super) initial: Cow<'a, Value>, } impl<'a> Into> for &Document<'a> { fn into(self) -> Vec { msgpack::to_vec(&self.current).unwrap() } } impl<'a> Document<'a> { pub fn new(id: Option, val: &'a Value) -> Self { Document { id, current: Cow::Borrowed(val), initial: Cow::Borrowed(val), } } }