use bumpalo::Bump;
use super::{DecodeError, Decoder, Writer};
use crate::model::borrowed::ValueRef;
use crate::model::value::Value;
pub fn encode(value: &Value) -> Vec<u8> {
let mut w = Writer::new();
w.value(value);
w.finish()
}
pub fn decode(bytes: &[u8]) -> Result<Value, DecodeError> {
let mut d = Decoder::open(bytes)?;
let v = d.value()?;
d.end()?;
Ok(v)
}
pub fn decode_ref<'a>(bytes: &'a [u8], arena: &'a Bump) -> Result<ValueRef<'a>, DecodeError> {
let mut d = Decoder::open(bytes)?;
let v = d.value_ref(arena)?;
d.end()?;
Ok(v)
}