pub struct Abigen { /* private fields */ }Expand description
Programmatically generate type-safe Rust bindings for an Ethereum smart contract from its ABI.
For all the supported ABI sources, see Source.
To generate bindings for multiple contracts at once, see MultiAbigen.
To generate bindings at compile time, see the abigen! macro, or use in a build.rs
file.
§Example
Running the code below will generate a file called token.rs containing the bindings inside,
which exports an ERC20Token struct, along with all its events.
use ethers_contract_abigen::Abigen;
Abigen::new("ERC20Token", "./abi.json")?.generate()?.write_to_file("token.rs")?;Implementations§
Source§impl Abigen
impl Abigen
Sourcepub fn new_raw(contract_name: Ident, abi_source: Source) -> Abigen
pub fn new_raw(contract_name: Ident, abi_source: Source) -> Abigen
Creates a new builder with the given contract name Ident and ABI source.
Sourcepub fn from_file(path: impl AsRef<Path>) -> Result<Abigen, Report>
pub fn from_file(path: impl AsRef<Path>) -> Result<Abigen, Report>
Attempts to load a new builder from an ABI JSON file at the specific path.
Sourcepub fn add_event_alias<S1, S2>(self, signature: S1, alias: S2) -> Abigen
pub fn add_event_alias<S1, S2>(self, signature: S1, alias: S2) -> Abigen
Manually adds a solidity event alias to specify what the event struct and function name will be in Rust.
For events without an alias, the PascalCase event name will be used.
Sourcepub fn add_method_alias<S1, S2>(self, signature: S1, alias: S2) -> Abigen
pub fn add_method_alias<S1, S2>(self, signature: S1, alias: S2) -> Abigen
Add a Solidity method error alias to specify the generated method name.
For methods without an alias, the snake_case method name will be used.
Sourcepub fn add_error_alias<S1, S2>(self, signature: S1, alias: S2) -> Abigen
pub fn add_error_alias<S1, S2>(self, signature: S1, alias: S2) -> Abigen
Add a Solidity custom error alias to specify the generated struct’s name.
For errors without an alias, the PascalCase error name will be used.
Sourcepub fn add_derive<S>(self, derive: S) -> Result<Abigen, Report>
pub fn add_derive<S>(self, derive: S) -> Result<Abigen, Report>
Add a custom derive to the derives for all structs and enums.
For example, this makes it possible to derive serde::Serialize and serde::Deserialize.
Sourcepub fn format(self, format: bool) -> Abigen
pub fn format(self, format: bool) -> Abigen
Specify whether to format the code or not. True by default.
This will use prettyplease, so the resulting formatted code will not be affected by
the local rustfmt version or config.
Sourcepub fn emit_cargo_directives(self, emit_cargo_directives: bool) -> Abigen
pub fn emit_cargo_directives(self, emit_cargo_directives: bool) -> Abigen
Specify whether to print cargo build script directives if the source is a path. By default, this is true only when executing inside of a build script.
Sourcepub fn generate(self) -> Result<ContractBindings, Report>
pub fn generate(self) -> Result<ContractBindings, Report>
Generates the contract bindings.
Sourcepub fn expand(self) -> Result<(ExpandedContract, Context), Report>
pub fn expand(self) -> Result<(ExpandedContract, Context), Report>
Expands the Abigen and returns the ExpandedContract that holds all tokens and the
Context that holds the state used during expansion.
Source§impl Abigen
impl Abigen
Sourcepub fn source_mut(&mut self) -> &mut Source
pub fn source_mut(&mut self) -> &mut Source
Returns a mutable reference to the contract’s ABI source.
Sourcepub fn method_aliases(&self) -> &HashMap<String, String>
pub fn method_aliases(&self) -> &HashMap<String, String>
Returns a reference to the contract’s method aliases.
Sourcepub fn method_aliases_mut(&mut self) -> &mut HashMap<String, String>
pub fn method_aliases_mut(&mut self) -> &mut HashMap<String, String>
Returns a mutable reference to the contract’s method aliases.
Sourcepub fn event_aliases(&self) -> &HashMap<String, String>
pub fn event_aliases(&self) -> &HashMap<String, String>
Returns a reference to the contract’s event aliases.
Sourcepub fn error_aliases_mut(&mut self) -> &mut HashMap<String, String>
pub fn error_aliases_mut(&mut self) -> &mut HashMap<String, String>
Returns a mutable reference to the contract’s event aliases.
Sourcepub fn derives_mut(&mut self) -> &mut Vec<Path>
pub fn derives_mut(&mut self) -> &mut Vec<Path>
Returns a mutable reference to the contract’s derives.
Trait Implementations§
Source§impl FromIterator<Abigen> for MultiAbigen
impl FromIterator<Abigen> for MultiAbigen
Source§fn from_iter<I>(iter: I) -> MultiAbigenwhere
I: IntoIterator<Item = Abigen>,
fn from_iter<I>(iter: I) -> MultiAbigenwhere
I: IntoIterator<Item = Abigen>,
Auto Trait Implementations§
impl Freeze for Abigen
impl RefUnwindSafe for Abigen
impl !Send for Abigen
impl !Sync for Abigen
impl Unpin for Abigen
impl UnwindSafe for Abigen
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§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> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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.