Struct alloy_json_abi::JsonAbi
source · pub struct JsonAbi {
pub constructor: Option<Constructor>,
pub fallback: Option<Fallback>,
pub receive: Option<Receive>,
pub functions: BTreeMap<String, Vec<Function>>,
pub events: BTreeMap<String, Vec<Event>>,
pub errors: BTreeMap<String, Vec<Error>>,
}
Expand description
The JSON contract ABI, as specified in the Solidity ABI spec.
Fields§
§constructor: Option<Constructor>
The constructor function.
fallback: Option<Fallback>
The fallback function.
receive: Option<Receive>
The receive function.
functions: BTreeMap<String, Vec<Function>>
The functions, indexed by the function name.
events: BTreeMap<String, Vec<Event>>
The events, indexed by the event name.
errors: BTreeMap<String, Vec<Error>>
The errors, indexed by the error name.
Implementations§
source§impl JsonAbi
impl JsonAbi
sourcepub fn parse<'a, I: IntoIterator<Item = &'a str>>(strings: I) -> Result<Self>
pub fn parse<'a, I: IntoIterator<Item = &'a str>>(strings: I) -> Result<Self>
Parse a Human-Readable ABI string into a JSON object.
§Examples
assert_eq!(JsonAbi::parse([])?, JsonAbi::new());
let abi = JsonAbi::parse([
"constructor(string symbol, string name)",
"function transferFrom(address from, address to, uint value)",
"function balanceOf(address owner)(uint balance)",
"event Transfer(address indexed from, address indexed to, address value)",
"error InsufficientBalance(account owner, uint balance)",
"function addPerson(tuple(string, uint16) person)",
"function addPeople(tuple(string, uint16)[] person)",
"function getPerson(uint id)(tuple(string, uint16))",
"event PersonAdded(uint indexed id, tuple(string, uint16) person)",
])?;
assert_eq!(abi.len(), 9);
sourcepub fn into_items(self) -> IntoItems ⓘ
pub fn into_items(self) -> IntoItems ⓘ
Returns an iterator over all of the items in the ABI.
sourcepub fn to_sol(&self, name: &str, config: Option<ToSolConfig>) -> String
pub fn to_sol(&self, name: &str, config: Option<ToSolConfig>) -> String
Formats this JSON ABI as a Solidity interface.
The order of the definitions is not guaranteed.
Generates:
interface <name> {
<enums>...
<UDVTs>...
<structs>...
<errors>...
<events>...
<fallback>
<receive>
<functions>...
}
Note that enums are going to be identical to uint8
UDVTs, since no
other information about enums is present in the ABI.
sourcepub fn to_sol_raw(
&self,
name: &str,
out: &mut String,
config: Option<ToSolConfig>,
)
pub fn to_sol_raw( &self, name: &str, out: &mut String, config: Option<ToSolConfig>, )
Formats this JSON ABI as a Solidity interface into the given string.
See to_sol
for more information.
sourcepub fn dedup(&mut self)
pub fn dedup(&mut self)
Deduplicates all functions, errors, and events which have the same name and inputs.
sourcepub const fn constructor(&self) -> Option<&Constructor>
pub const fn constructor(&self) -> Option<&Constructor>
Returns an immutable reference to the constructor.
sourcepub fn constructor_mut(&mut self) -> Option<&mut Constructor>
pub fn constructor_mut(&mut self) -> Option<&mut Constructor>
Returns a mutable reference to the constructor.
sourcepub fn function(&self, name: &str) -> Option<&Vec<Function>>
pub fn function(&self, name: &str) -> Option<&Vec<Function>>
Returns an immutable reference to the list of all the functions with the given name.
sourcepub fn function_mut(&mut self, name: &str) -> Option<&mut Vec<Function>>
pub fn function_mut(&mut self, name: &str) -> Option<&mut Vec<Function>>
Returns a mutable reference to the list of all the functions with the given name.
sourcepub fn event(&self, name: &str) -> Option<&Vec<Event>>
pub fn event(&self, name: &str) -> Option<&Vec<Event>>
Returns an immutable reference to the list of all the events with the given name.
sourcepub fn event_mut(&mut self, name: &str) -> Option<&mut Vec<Event>>
pub fn event_mut(&mut self, name: &str) -> Option<&mut Vec<Event>>
Returns a mutable reference to the list of all the events with the given name.
sourcepub fn error(&self, name: &str) -> Option<&Vec<Error>>
pub fn error(&self, name: &str) -> Option<&Vec<Error>>
Returns an immutable reference to the list of all the errors with the given name.
sourcepub fn error_mut(&mut self, name: &str) -> Option<&mut Vec<Error>>
pub fn error_mut(&mut self, name: &str) -> Option<&mut Vec<Error>>
Returns a mutable reference to the list of all the errors with the given name.
sourcepub fn functions(&self) -> Flatten<Values<'_, String, Vec<Function>>> ⓘ
pub fn functions(&self) -> Flatten<Values<'_, String, Vec<Function>>> ⓘ
Returns an iterator over immutable references to the functions.
sourcepub fn functions_mut(&mut self) -> Flatten<ValuesMut<'_, String, Vec<Function>>> ⓘ
pub fn functions_mut(&mut self) -> Flatten<ValuesMut<'_, String, Vec<Function>>> ⓘ
Returns an iterator over mutable references to the functions.
sourcepub fn events(&self) -> Flatten<Values<'_, String, Vec<Event>>> ⓘ
pub fn events(&self) -> Flatten<Values<'_, String, Vec<Event>>> ⓘ
Returns an iterator over immutable references to the events.
sourcepub fn events_mut(&mut self) -> Flatten<ValuesMut<'_, String, Vec<Event>>> ⓘ
pub fn events_mut(&mut self) -> Flatten<ValuesMut<'_, String, Vec<Event>>> ⓘ
Returns an iterator over mutable references to the events.
Trait Implementations§
source§impl<'de> Deserialize<'de> for JsonAbi
impl<'de> Deserialize<'de> for JsonAbi
source§fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error>
fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error>
source§impl<'a> FromIterator<AbiItem<'a>> for JsonAbi
impl<'a> FromIterator<AbiItem<'a>> for JsonAbi
source§impl PartialEq for JsonAbi
impl PartialEq for JsonAbi
impl Eq for JsonAbi
impl StructuralPartialEq for JsonAbi
Auto Trait Implementations§
impl Freeze for JsonAbi
impl RefUnwindSafe for JsonAbi
impl Send for JsonAbi
impl Sync for JsonAbi
impl Unpin for JsonAbi
impl UnwindSafe for JsonAbi
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§impl<T> FmtForward for T
impl<T> FmtForward for T
source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.source§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read moresource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read moresource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.source§impl<T> Tap for T
impl<T> Tap for T
source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read moresource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read moresource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read moresource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read moresource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read moresource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read moresource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.