substrate_data/wire/binary/
codec.rs1use bumpalo::Bump;
4
5use super::{DecodeError, Decoder, Writer};
6use crate::model::borrowed::ValueRef;
7use crate::model::value::Value;
8
9pub fn encode(value: &Value) -> Vec<u8> {
11 let mut w = Writer::new();
12 w.value(value);
13 w.finish()
14}
15
16pub fn decode(bytes: &[u8]) -> Result<Value, DecodeError> {
22 let mut d = Decoder::open(bytes)?;
23 let v = d.value()?;
24 d.end()?;
25 Ok(v)
26}
27
28pub fn decode_ref<'a>(bytes: &'a [u8], arena: &'a Bump) -> Result<ValueRef<'a>, DecodeError> {
35 let mut d = Decoder::open(bytes)?;
36 let v = d.value_ref(arena)?;
37 d.end()?;
38 Ok(v)
39}