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", so this trait is not object safe.

Implementations on Foreign Types§

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>

Source§

impl Codec32 for [u8; 32]

Source§

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

Source§

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

Implementors§