[][src]Crate ssz

Provides encoding (serialization) and decoding (deserialization) in the SimpleSerialize (SSZ) format designed for use in Ethereum 2.0.

Adheres to the Ethereum 2.0 SSZ specification at v0.8.1 .

Example

use ssz_derive::{Encode, Decode};
use ssz::{Decode, Encode};

#[derive(PartialEq, Debug, Encode, Decode)]
struct Foo {
    a: u64,
    b: Vec<u16>,
}

fn main() {
    let foo = Foo {
        a: 42,
        b: vec![1, 3, 3, 7]
    };

    let ssz_bytes: Vec<u8> = foo.as_ssz_bytes();

    let decoded_foo = Foo::from_ssz_bytes(&ssz_bytes).unwrap();

    assert_eq!(foo, decoded_foo);
}

See examples/ for manual implementations of the Encode and Decode traits.

Macros

impl_decode_via_from

Implements Decode for $impl_type using an implementation of From<$impl_type> for $from_type.

impl_encode_via_from

Implements Encode for $impl_type using an implementation of From<$impl_type> for $from_type.

Structs

SszDecoder

Decodes some slices of SSZ into object instances. Should be instantiated using SszDecoderBuilder.

SszDecoderBuilder

Builds an SszDecoder.

SszEncoder

Allow for encoding an ordered series of distinct or indistinct objects as SSZ bytes.

Enums

DecodeError

Returned when SSZ decoding fails.

Constants

BYTES_PER_LENGTH_OFFSET

The number of bytes used to represent an offset.

MAX_LENGTH_VALUE

Traits

Decode

Provides SSZ decoding (de-serialization) via the from_ssz_bytes(&bytes) method.

Encode

Provides SSZ encoding (serialization) via the as_ssz_bytes(&self) method.

Functions

decode_list_of_variable_length_items

Decodes bytes as if it were a list of variable-length items.

ssz_encode

Convenience function to SSZ encode an object supporting ssz::Encode.