Skip to main content

Codec32

Trait Codec32 

Source
pub trait Codec32: Sized {
    // Required methods
    fn encode_32(&self) -> [u8; 32];
    fn decode_32(bytes: &[u8; 32]) -> Result<Self>;
}
Expand description

Trait for types that can be encoded/decoded to/from 32-byte slots.

This trait is used for storage operations where all values must fit in fixed 32-byte slots. Primitive integers are stored in little-endian format with zero-padding.

§Derivable

Use #[derive(Codec32)] for custom types (requires BytesCodec):

#[derive(BytesCodec, Codec32)]
struct Balance {
    amount: u64,
    locked: u64,
}

§Example

let value = 1000u64;
let slot = value.encode_32();
let decoded = u64::decode_32(&slot)?;
assert_eq!(decoded, 1000);

Required Methods§

Source

fn encode_32(&self) -> [u8; 32]

Encodes the value into a 32-byte array.

Source

fn decode_32(bytes: &[u8; 32]) -> Result<Self>

Decodes a value from a 32-byte array.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl Codec32 for [u8; 32]

Source§

fn encode_32(&self) -> [u8; 32]

Source§

fn decode_32(bytes: &[u8; 32]) -> Result<Self>

Source§

impl Codec32 for bool

Source§

fn encode_32(&self) -> [u8; 32]

Source§

fn decode_32(bytes: &[u8; 32]) -> Result<Self>

Source§

impl Codec32 for i8

Source§

fn encode_32(&self) -> [u8; 32]

Source§

fn decode_32(bytes: &[u8; 32]) -> Result<Self>

Source§

impl Codec32 for i16

Source§

fn encode_32(&self) -> [u8; 32]

Source§

fn decode_32(bytes: &[u8; 32]) -> Result<Self>

Source§

impl Codec32 for i32

Source§

fn encode_32(&self) -> [u8; 32]

Source§

fn decode_32(bytes: &[u8; 32]) -> Result<Self>

Source§

impl Codec32 for i64

Source§

fn encode_32(&self) -> [u8; 32]

Source§

fn decode_32(bytes: &[u8; 32]) -> Result<Self>

Source§

impl Codec32 for i128

Source§

fn encode_32(&self) -> [u8; 32]

Source§

fn decode_32(bytes: &[u8; 32]) -> Result<Self>

Source§

impl Codec32 for u8

Source§

fn encode_32(&self) -> [u8; 32]

Source§

fn decode_32(bytes: &[u8; 32]) -> Result<Self>

Source§

impl Codec32 for u16

Source§

fn encode_32(&self) -> [u8; 32]

Source§

fn decode_32(bytes: &[u8; 32]) -> Result<Self>

Source§

impl Codec32 for u32

Source§

fn encode_32(&self) -> [u8; 32]

Source§

fn decode_32(bytes: &[u8; 32]) -> Result<Self>

Source§

impl Codec32 for u64

Source§

fn encode_32(&self) -> [u8; 32]

Source§

fn decode_32(bytes: &[u8; 32]) -> Result<Self>

Source§

impl Codec32 for u128

Source§

fn encode_32(&self) -> [u8; 32]

Source§

fn decode_32(bytes: &[u8; 32]) -> Result<Self>

Implementors§