Derive Macro ethers_contract::EthAbiCodec
source · #[derive(EthAbiCodec)]
Available on crate feature
abigen
only.Expand description
Derives the AbiEncode
and AbiDecode
traits for the labeled type.
This is separate from other derive macros because this derives a generic codec implementation
for structs, while EthEvent
and others derive a specialized implementation.
Note that this macro requires the EthAbiType
macro to be derived or for the type to implement
AbiType
and Tokenizable
. The type returned by the AbiType
implementation must be a
Token::Tuple
, otherwise this macro’s implementation of AbiDecode
will panic at runtime.
§Examples
use ethers_contract_derive::{EthAbiCodec, EthAbiType};
use ethers_core::types::Address;
use ethers_core::abi::{AbiDecode, AbiEncode};
#[derive(Clone, Debug, Default, PartialEq, EthAbiType, EthAbiCodec)]
struct MyStruct {
addr: Address,
old_value: String,
new_value: String,
}
let value = MyStruct::default();
let encoded = value.clone().encode();
let decoded = MyStruct::decode(&encoded).unwrap();
assert_eq!(decoded, value);