pub trait SolCall: Sized {
type Parameters<'a>: SolType<Token<'a> = Self::Token<'a>>;
type Token<'a>: TokenSeq<'a>;
type Return;
type ReturnTuple<'a>: SolType<Token<'a> = Self::ReturnToken<'a>>;
type ReturnToken<'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<'_>;
fn abi_decode_returns(data: &[u8], validate: bool) -> Result<Self::Return>;
// 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> ⓘ { ... }
fn abi_encode_returns<'a, E>(e: &'a E) -> Vec<u8> ⓘ
where E: SolTypeValue<Self::ReturnTuple<'a>> { ... }
}
Expand description
Required Associated Constants§
Required Associated Types§
Sourcetype Parameters<'a>: SolType<Token<'a> = Self::Token<'a>>
type Parameters<'a>: SolType<Token<'a> = Self::Token<'a>>
The underlying tuple type which represents this type’s arguments.
If this type has no arguments, this will be the unit type ()
.
Sourcetype ReturnTuple<'a>: SolType<Token<'a> = Self::ReturnToken<'a>>
type ReturnTuple<'a>: SolType<Token<'a> = Self::ReturnToken<'a>>
The underlying tuple type which represents this type’s return values.
If this type has no return values, this will be the unit type ()
.
Sourcetype ReturnToken<'a>: TokenSeq<'a>
type ReturnToken<'a>: TokenSeq<'a>
The returns’ corresponding TokenSeq type.
Required Methods§
Sourcefn new(tuple: <Self::Parameters<'_> as SolType>::RustType) -> Self
fn new(tuple: <Self::Parameters<'_> as SolType>::RustType) -> Self
Convert from the tuple type used for ABI encoding and decoding.
Provided Methods§
Sourcefn abi_encoded_size(&self) -> usize
fn abi_encoded_size(&self) -> usize
The size of the encoded data in bytes, without its selector.
Sourcefn abi_decode_raw(data: &[u8], validate: bool) -> Result<Self>
fn abi_decode_raw(data: &[u8], validate: bool) -> Result<Self>
ABI decode this call’s arguments from the given slice, without its selector.
Sourcefn abi_decode(data: &[u8], validate: bool) -> Result<Self>
fn abi_decode(data: &[u8], validate: bool) -> Result<Self>
ABI decode this call’s arguments from the given slice, with the selector.
Sourcefn abi_encode_raw(&self, out: &mut Vec<u8>)
fn abi_encode_raw(&self, out: &mut Vec<u8>)
ABI encode the call to the given buffer without its selector.
Sourcefn abi_encode(&self) -> Vec<u8> ⓘ
fn abi_encode(&self) -> Vec<u8> ⓘ
ABI encode the call to the given buffer with its selector.
Sourcefn abi_encode_returns<'a, E>(e: &'a E) -> Vec<u8> ⓘwhere
E: SolTypeValue<Self::ReturnTuple<'a>>,
fn abi_encode_returns<'a, E>(e: &'a E) -> Vec<u8> ⓘwhere
E: SolTypeValue<Self::ReturnTuple<'a>>,
ABI encode the call’s return values.
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.