Crate alloy_rlp

Source
Expand description

§alloy-rlp

This crate provides Ethereum RLP (de)serialization functionality. RLP is commonly used for Ethereum EL datastructures, and its documentation can be found at ethereum.org.

§Usage

We strongly recommend deriving RLP traits via the RlpEncodable and RlpDecodable derive macros.

Trait methods can then be accessed via the Encodable and Decodable traits.

§Example

use alloy_rlp::{RlpEncodable, RlpDecodable, Decodable, Encodable};

#[derive(Debug, RlpEncodable, RlpDecodable, PartialEq)]
pub struct MyStruct {
    pub a: u64,
    pub b: Vec<u8>,
}

let my_struct = MyStruct {
    a: 42,
    b: vec![1, 2, 3],
};

let mut buffer = Vec::<u8>::new();
let encoded = my_struct.encode(&mut buffer);
let decoded = MyStruct::decode(&mut buffer.as_slice()).unwrap();
assert_eq!(my_struct, decoded);

Re-exports§

pub use bytes;
pub use bytes::Buf;
pub use bytes::BufMut;
pub use bytes::Bytes;
pub use bytes::BytesMut;

Macros§

impl_max_encoded_len
Implement MaxEncodedLen and MaxEncodedLenAssoc for a type.

Structs§

Header
The header of an RLP item.
Rlp
An active RLP decoder, with a specific slice of a payload.

Enums§

Error
RLP error type.
PayloadView
Structured representation of an RLP payload.

Constants§

EMPTY_LIST_CODE
RLP prefix byte for a 0-length array.
EMPTY_STRING_CODE
RLP prefix byte for 0-length string.

Traits§

Decodable
A type that can be decoded from an RLP blob.
Encodable
A type that can be encoded via RLP.
MaxEncodedLen
Defines the max length of an Encodable type as a const generic.
MaxEncodedLenAssoc
Defines the max length of an Encodable type as an associated constant.

Functions§

decode_exact
Decodes the entire input, ensuring no trailing bytes remain.
encode
Encode a value.
encode_fixed_sizearrayvec
Encode a type with a known maximum size.
encode_iter
Encode all items from an iterator.
encode_list
Encode a list of items.
length_of_length
Determine the length in bytes of the length prefix of an RLP item.
list_length
Calculate the length of a list.

Type Aliases§

Result
RLP result type.

Derive Macros§

RlpDecodablederive
Derives Decodable for the type whose implementation expects an rlp-list input: <rlp-header, fields...>
RlpDecodableWrapperderive
Derives Decodable for the type whose implementation expects only the individual fields encoded: <fields...>
RlpEncodablederive
Derives Encodable for the type which encodes the all fields as list: <rlp-header, fields...>
RlpEncodableWrapperderive
Derives Encodable for the newtype which encodes its single field as-is, without a header: <field>
RlpMaxEncodedLenderive
Derives MaxEncodedLen for types of constant size.