pub struct HttpRpcProvider(/* private fields */);Expand description
A dedicated HTTP RPC provider.
This provider should be used for regular RPC calls, transaction submission, and helpers such as ERC-165 queries.
Implementations§
Source§impl HttpRpcProvider
impl HttpRpcProvider
Sourcepub async fn ensure_erc165_conform(
&self,
address: Address,
) -> Result<(), ERC165ConfirmError>
pub async fn ensure_erc165_conform( &self, address: Address, ) -> Result<(), ERC165ConfirmError>
Checks whether the contract at address correctly implements ERC-165.
The check follows the procedure defined in EIP-165:
supportsInterface(0x01ffc9a7)must returntrue.supportsInterface(0xffffffff)must returnfalse.
Both queries are batched into one RPC request through Multicall3 at its canonical address.
Inspired by OpenZeppelin’s
ERC165Checker.supportsERC165.
§Errors
ERC165ConfirmError::NotAContract– the address has no deployed code.ERC165ConfirmError::Unsupported– the contract is not ERC-165 conformant: either it does not respond tosupportsInterface(0x01ffc9a7), or it incorrectly claims to support the invalid interface0xffffffff.ERC165ConfirmError::TransportError– an RPC transport failure.
Sourcepub async fn erc165_supports_interface_unchecked(
&self,
address: Address,
selectors: impl IntoIterator<Item = [u8; 4]>,
) -> Result<(), ERC165ConfirmError>
pub async fn erc165_supports_interface_unchecked( &self, address: Address, selectors: impl IntoIterator<Item = [u8; 4]>, ) -> Result<(), ERC165ConfirmError>
Queries whether the contract at address supports the interface
identified by the XOR of the given selectors, without first
verifying ERC-165 conformance.
Inspired by OpenZeppelin’s
ERC165Checker.supportsERC165InterfaceUnchecked.
§Errors
Returns ERC165ConfirmError if the contract does not support the
requested interface, on transport failures, or if the target address
is not a deployed contract.
§Note
This method does not verify strict ERC-165 compliance. Use
HttpRpcProvider::erc165_supports_interface if you also want to ensure
the contract does not claim to support the invalid interface 0xffffffff.
Sourcepub async fn erc165_supports_interface(
&self,
address: Address,
selectors: impl IntoIterator<Item = [u8; 4]>,
) -> Result<(), ERC165ConfirmError>
pub async fn erc165_supports_interface( &self, address: Address, selectors: impl IntoIterator<Item = [u8; 4]>, ) -> Result<(), ERC165ConfirmError>
Checks whether the contract at address supports the interface
identified by the XOR of the given selectors.
This method performs the full ERC-165 verification:
The requested interface query and both ERC-165 conformance queries are batched into one RPC request through Multicall3 at its canonical address.
Inspired by OpenZeppelin’s
ERC165Checker.supportsInterface.
§Errors
Returns ERC165ConfirmError if the contract does not support the
requested interface, on transport failures, if the target address is
not a contract, or if the contract violates the EIP-165 spec.
Source§impl HttpRpcProvider
impl HttpRpcProvider
Sourcepub fn inner(&self) -> DynProvider
pub fn inner(&self) -> DynProvider
Returns the HTTP RPC provider.
Sourcepub fn with_mock_asserter(asserter: Asserter) -> Self
pub fn with_mock_asserter(asserter: Asserter) -> Self
Creates a provider backed by the given mocked Asserter.
This is intended for tests and uses Alloy’s mocked provider infrastructure. See the Alloy mocking provider example for details: https://alloy.rs/examples/providers/mocking/.
This method does not build a retry-layer. It must only be used for tests.
Trait Implementations§
Source§impl AsRef<DynProvider> for HttpRpcProvider
impl AsRef<DynProvider> for HttpRpcProvider
Source§fn as_ref(&self) -> &DynProvider
fn as_ref(&self) -> &DynProvider
Source§impl Clone for HttpRpcProvider
impl Clone for HttpRpcProvider
Source§fn clone(&self) -> HttpRpcProvider
fn clone(&self) -> HttpRpcProvider
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Deref for HttpRpcProvider
impl Deref for HttpRpcProvider
Auto Trait Implementations§
impl !RefUnwindSafe for HttpRpcProvider
impl !UnwindSafe for HttpRpcProvider
impl Freeze for HttpRpcProvider
impl Send for HttpRpcProvider
impl Sync for HttpRpcProvider
impl Unpin for HttpRpcProvider
impl UnsafeUnpin for HttpRpcProvider
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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::RequestSource§impl<T> IntoResult<T> for T
impl<T> IntoResult<T> for T
type Err = !
fn into_result(self) -> Result<T, <T as IntoResult<T>>::Err>
Source§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi Quirk value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);