alloy_sol_types

Trait SolError

Source
pub trait SolError: Sized {
    type Parameters<'a>: SolType<Token<'a> = Self::Token<'a>>;
    type Token<'a>: TokenSeq<'a>;

    const SIGNATURE: &'static str;
    const SELECTOR: [u8; 4];

    // Required methods
    fn new(tuple: <Self::Parameters<'_> as SolType>::RustType) -> Self;
    fn tokenize(&self) -> Self::Token<'_>;

    // Provided methods
    fn abi_encoded_size(&self) -> usize { ... }
    fn abi_decode_raw(data: &[u8], validate: bool) -> Result<Self> { ... }
    fn abi_decode(data: &[u8], validate: bool) -> Result<Self> { ... }
    fn abi_encode_raw(&self, out: &mut Vec<u8>) { ... }
    fn abi_encode(&self) -> Vec<u8>  { ... }
}
Expand description

A Solidity custom error.

§Implementer’s Guide

It should not be necessary to implement this trait manually. Instead, use the sol! procedural macro to parse Solidity syntax into types that implement this trait.

Required Associated Constants§

Source

const SIGNATURE: &'static str

The error’s ABI signature.

Source

const SELECTOR: [u8; 4]

The error selector: keccak256(SIGNATURE)[0..4]

Required Associated Types§

Source

type Parameters<'a>: SolType<Token<'a> = Self::Token<'a>>

The underlying tuple type which represents the error’s members.

If the error has no arguments, this will be the unit type ()

Source

type Token<'a>: TokenSeq<'a>

The corresponding TokenSeq type.

Required Methods§

Source

fn new(tuple: <Self::Parameters<'_> as SolType>::RustType) -> Self

Convert from the tuple type used for ABI encoding and decoding.

Source

fn tokenize(&self) -> Self::Token<'_>

Convert to the token type used for EIP-712 encoding and decoding.

Provided Methods§

Source

fn abi_encoded_size(&self) -> usize

The size of the error params when encoded in bytes, without the selector.

Source

fn abi_decode_raw(data: &[u8], validate: bool) -> Result<Self>

ABI decode this call’s arguments from the given slice, without its selector.

Source

fn abi_decode(data: &[u8], validate: bool) -> Result<Self>

ABI decode this error’s arguments from the given slice, with the selector.

Source

fn abi_encode_raw(&self, out: &mut Vec<u8>)

ABI encode the error to the given buffer without its selector.

Source

fn abi_encode(&self) -> Vec<u8>

ABI encode the error to the given buffer with its selector.

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.

Implementors§

Source§

impl SolError for Panic

Source§

const SIGNATURE: &'static str = "Panic(uint256)"

Source§

const SELECTOR: [u8; 4] = _

Source§

type Parameters<'a> = (Uint<256>,)

Source§

type Token<'a> = (WordToken,)

Source§

impl SolError for Revert

Source§

const SIGNATURE: &'static str = "Error(string)"

Source§

const SELECTOR: [u8; 4] = _

Source§

type Parameters<'a> = (String,)

Source§

type Token<'a> = (PackedSeqToken<'a>,)