pub trait BytesCodec: Sized {
// Required methods
fn encode_bytes(&self) -> Vec<u8>;
fn decode_bytes(bytes: &[u8]) -> Result<Self>;
}Expand description
Trait for types that can be encoded/decoded to/from variable-length bytes.
This trait is used for complex types, strings, and data that doesn’t fit in 32 bytes. All encoding uses little-endian format for integers.
§Derivable
Use #[derive(BytesCodec)] for automatic implementation:
ⓘ
#[derive(BytesCodec)]
struct User {
name: String,
age: u32,
active: bool,
}§Example
ⓘ
let data = vec![1, 2, 3, 4];
let bytes = data.encode_bytes();
let decoded = Vec::<u8>::decode_bytes(&bytes)?;
assert_eq!(decoded, data);Required Methods§
Sourcefn encode_bytes(&self) -> Vec<u8>
fn encode_bytes(&self) -> Vec<u8>
Encodes the value into a byte vector.
Sourcefn decode_bytes(bytes: &[u8]) -> Result<Self>
fn decode_bytes(bytes: &[u8]) -> Result<Self>
Decodes a value from a byte slice.
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.