amf_rs/traits.rs
1use crate::errors::AmfError;
2
3pub trait Marshall {
4 fn marshall(&self) -> Result<Vec<u8>, AmfError>;
5}
6
7pub trait MarshallLength {
8 fn marshall_length(&self) -> usize;
9}
10
11pub trait Unmarshall: Sized {
12 fn unmarshall(buf: &[u8]) -> Result<(Self, usize), AmfError>;
13}
14
15pub trait AmfType: Marshall + MarshallLength + Unmarshall {}
16
17impl<T: Marshall + MarshallLength + Unmarshall> AmfType for T {}