pub trait BytesEncodable<const N: usize, E = GeneralError>: Into<[u8; N]> + for<'a> TryFrom<&'a [u8], Error = E> {
const SIZE: usize = N;
// Provided methods
fn into_encoded(self) -> [u8; N] { ... }
fn into_boxed(self) -> Box<[u8]> { ... }
}
Expand description
Represents a type that can be encoded to/decoded from a fixed sized byte array of size N
.
This requires processing and memory allocation to represent the type in binary encoding.
Differences between BytesEncodable and BytesRepresentable:
- BytesRepresentable is already internally carrying the encoded representation of the type, so no additional encoding or allocation is required to represent the type as a byte array.
- BytesEncodable requires additional transformation and allocation to represent the type as a fixed size byte array.
- BytesEncodable is the strict superset of BytesRepresentable: meaning the former can be possibly implemented for a type that already implements the latter, but it is not possible vice versa.
Provided Associated Constants§
Provided Methods§
Sourcefn into_encoded(self) -> [u8; N]
fn into_encoded(self) -> [u8; N]
Convenience function to represent the
A shorthand for let v: [u8; N] = self.into()
.
Sourcefn into_boxed(self) -> Box<[u8]>
fn into_boxed(self) -> Box<[u8]>
Convenience function to encode the type into a Box.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.