mod arrays;
mod decode;
mod encode;
mod wire;
use bytes::Bytes;
use crate::alias::AliasRegistry;
use crate::error::Result;
use crate::model::Payload;
#[derive(Clone, Copy, Debug, Default)]
pub struct EncodeOptions {
pub strip_datatypes: bool,
}
impl EncodeOptions {
#[must_use]
pub const fn birth() -> Self {
Self {
strip_datatypes: false,
}
}
#[must_use]
pub const fn data() -> Self {
Self {
strip_datatypes: true,
}
}
}
#[must_use]
pub fn encode(payload: &Payload, opts: EncodeOptions) -> Bytes {
encode::encode_payload(payload, opts.strip_datatypes)
}
pub fn decode(bytes: &[u8], types: Option<&AliasRegistry>) -> Result<Payload> {
decode::decode_payload(bytes, types)
}