Struct zksync_web3_rs::contract::Abigen
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§
§impl Abigen
impl Abigen
pub fn new<T, S>(contract_name: T, abi_source: S) -> Result<Abigen, Report>where
T: AsRef<str>,
S: AsRef<str>,
pub fn new<T, S>(contract_name: T, abi_source: S) -> Result<Abigen, Report>where T: AsRef<str>, S: AsRef<str>,
pub 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][Source].
pub 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.
pub fn add_event_alias<S1, S2>(self, signature: S1, alias: S2) -> Abigenwhere
S1: Into<String>,
S2: Into<String>,
pub fn add_event_alias<S1, S2>(self, signature: S1, alias: S2) -> Abigenwhere S1: Into<String>, S2: Into<String>,
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.
pub fn add_method_alias<S1, S2>(self, signature: S1, alias: S2) -> Abigenwhere
S1: Into<String>,
S2: Into<String>,
pub fn add_method_alias<S1, S2>(self, signature: S1, alias: S2) -> Abigenwhere S1: Into<String>, S2: Into<String>,
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.
pub fn add_error_alias<S1, S2>(self, signature: S1, alias: S2) -> Abigenwhere
S1: Into<String>,
S2: Into<String>,
pub fn add_error_alias<S1, S2>(self, signature: S1, alias: S2) -> Abigenwhere S1: Into<String>, S2: Into<String>,
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.
pub fn add_derive<S>(self, derive: S) -> Result<Abigen, Report>where
S: AsRef<str>,
pub fn add_derive<S>(self, derive: S) -> Result<Abigen, Report>where S: AsRef<str>,
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.
pub 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.
pub 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.
§impl Abigen
impl Abigen
pub fn source(&self) -> &Source
pub fn source(&self) -> &Source
Returns a reference to the contract’s ABI source.
pub 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.
pub fn method_aliases(&self) -> &HashMap<String, String, RandomState>
pub fn method_aliases(&self) -> &HashMap<String, String, RandomState>
Returns a reference to the contract’s method aliases.
pub fn method_aliases_mut(
&mut self
) -> &mut HashMap<String, String, RandomState>
pub fn method_aliases_mut( &mut self ) -> &mut HashMap<String, String, RandomState>
Returns a mutable reference to the contract’s method aliases.
pub fn event_aliases(&self) -> &HashMap<String, String, RandomState>
pub fn event_aliases(&self) -> &HashMap<String, String, RandomState>
Returns a reference to the contract’s event aliases.
pub fn error_aliases_mut(&mut self) -> &mut HashMap<String, String, RandomState>
pub fn error_aliases_mut(&mut self) -> &mut HashMap<String, String, RandomState>
Returns a mutable reference to the contract’s event aliases.
pub fn derives_mut(&mut self) -> &mut Vec<Path, Global>
pub fn derives_mut(&mut self) -> &mut Vec<Path, Global>
Returns a mutable reference to the contract’s derives.
Trait Implementations§
§impl FromIterator<Abigen> for MultiAbigen
impl FromIterator<Abigen> for MultiAbigen
§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 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
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§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.§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.§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.§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.§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.§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.§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.§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.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where &'a Self: for<'a> IntoIterator,
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>
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere Self: Sized,
§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 more§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 more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> Rwhere
Self: Borrow<B>,
B: 'a + ?Sized,
R: 'a,
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> Rwhere Self: Borrow<B>, B: 'a + ?Sized, R: 'a,
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R
) -> Rwhere
Self: BorrowMut<B>,
B: 'a + ?Sized,
R: 'a,
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R ) -> Rwhere Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere
Self: AsRef<U>,
U: 'a + ?Sized,
R: 'a,
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere Self: AsRef<U>, U: 'a + ?Sized, R: 'a,
self, then passes self.as_ref() into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> Rwhere
Self: AsMut<U>,
U: 'a + ?Sized,
R: 'a,
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> Rwhere Self: AsMut<U>, U: 'a + ?Sized, R: 'a,
self, then passes self.as_mut() into the pipe
function.§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere
Self: Borrow<B>,
B: ?Sized,
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere Self: Borrow<B>, B: ?Sized,
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
Self: BorrowMut<B>,
B: ?Sized,
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere Self: BorrowMut<B>, B: ?Sized,
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere
Self: AsRef<R>,
R: ?Sized,
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere Self: AsRef<R>, R: ?Sized,
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
Self: AsMut<R>,
R: ?Sized,
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere Self: AsMut<R>, R: ?Sized,
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere
Self: Deref<Target = T>,
T: ?Sized,
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere Self: Deref<Target = T>, T: ?Sized,
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere
Self: DerefMut<Target = T> + Deref,
T: ?Sized,
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere Self: DerefMut<Target = T> + Deref, T: ?Sized,
Deref::Target of a value. Read more§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.§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.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Selfwhere
Self: Borrow<B>,
B: ?Sized,
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Selfwhere Self: Borrow<B>, B: ?Sized,
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
Self: BorrowMut<B>,
B: ?Sized,
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere Self: BorrowMut<B>, B: ?Sized,
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere
Self: AsRef<R>,
R: ?Sized,
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere Self: AsRef<R>, R: ?Sized,
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
Self: AsMut<R>,
R: ?Sized,
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere Self: AsMut<R>, R: ?Sized,
.tap_ref_mut() only in debug builds, and is erased in release
builds.