pub mod decode;
pub mod described;
pub mod encode;
pub mod primitives;
pub mod value;
pub use decode::{Decode, DecodeError, peek_code};
pub use described::{
Descriptor, ListDecoder, decode_described_list, decode_descriptor, descriptors,
peek_descriptor,
};
pub use encode::{
Encode, FieldWriter, encode_described_list, encode_descriptor, encode_map_entries, encode_null,
encode_symbol_array,
};
pub use primitives::{OrderedMap, Symbol, codes};
pub use value::Value;
use bytes::{Bytes, BytesMut};
pub fn to_bytes<T: Encode + ?Sized>(value: &T) -> BytesMut {
let mut buf = BytesMut::new();
value.encode(&mut buf);
buf
}
pub fn to_vec<T: Encode + ?Sized>(value: &T) -> Vec<u8> {
to_bytes(value).to_vec()
}
pub fn from_bytes<T: Decode>(mut buf: Bytes) -> Result<T, DecodeError> {
T::decode(&mut buf)
}
pub fn from_slice<T: Decode>(slice: &[u8]) -> Result<T, DecodeError> {
T::decode(&mut Bytes::copy_from_slice(slice))
}