Derive Macro ethers_contract::EthAbiCodec

source ·
#[derive(EthAbiCodec)]
Available on crate feature abigen only.
Expand description

Derives the AbiEncode, AbiDecode and traits for the labeled type.

This is an addition to EthAbiType that lacks the AbiEncode, AbiDecode implementation.

The reason why this is a separate macro is the AbiEncode / AbiDecode are ethers generalized codec traits used for types, calls, etc. However, encoding/decoding a call differs from the basic encoding/decoding, ([selector + encode(self)])

Example

use ethers_contract::{EthAbiCodec, EthAbiType};
use ethers_core::types::*;

#[derive(Debug, Clone, EthAbiType, EthAbiCodec)]
struct MyStruct {
    addr: Address,
    old_value: String,
    new_value: String,
}
let val = MyStruct {..};
let bytes = val.encode();
let val = MyStruct::decode(&bytes).unwrap();