Expand description
Serialization and deserialization traits and utilities.
This module provides two encoding strategies for contract data:
Codec32: Fixed 32-byte encoding for storage slotsBytesCodec: Variable-length encoding for complex types
Both traits support #[derive] macros for automatic implementation.
§Codec32 - Fixed-Size Storage
Used for values stored in 32-byte storage slots. All primitive integers, booleans, and 32-byte arrays implement this trait.
ⓘ
use truthlinked_sdk::codec::Codec32;
let value = 42u64;
let encoded = value.encode_32(); // [42, 0, 0, ..., 0] (32 bytes)
let decoded = u64::decode_32(&encoded)?; // 42§BytesCodec - Variable-Length Encoding
Used for complex types, strings, and variable-length data. Supports automatic derivation for structs and enums.
ⓘ
#[derive(BytesCodec)]
struct Transfer {
to: [u8; 32],
amount: u64,
}
let transfer = Transfer { to: [0; 32], amount: 100 };
let bytes = transfer.encode_bytes();
let decoded = Transfer::decode_bytes(&bytes)?;§Encoder/Decoder - Builder Pattern
For manual encoding of complex types:
ⓘ
use truthlinked_sdk::codec::{Encoder, Decoder};
// Encoding
let mut enc = Encoder::new();
enc.push_u64(42);
enc.push_string("hello");
enc.push_bool(true);
let bytes = enc.into_vec();
// Decoding
let mut dec = Decoder::new(&bytes);
let num = dec.read_u64()?;
let text = dec.read_string()?;
let flag = dec.read_bool()?;
dec.finish()?; // Ensure all bytes consumedStructs§
- Decoder
- Parser for decoding values from a byte stream.
- Encoder
- Builder for encoding multiple values into a byte stream.
Constants§
- ERR_
CODEC - Error code for general codec failures.
- ERR_
CODEC_ EOF - Error code for unexpected end of input during decoding.
- ERR_
CODEC_ UTF8 - Error code for invalid UTF-8 sequences in string decoding.
Traits§
- Bytes
Codec - Trait for types that can be encoded/decoded to/from variable-length bytes.
- Codec32
- Trait for types that can be encoded/decoded to/from 32-byte slots.