This project implements a Provider
type which wraps the browser's window.ethereum
for use in Rust, which is useful for wasm-based projects (e.g. front-ends).
bash
cargo add ethereum-provider
toml
ethereum-provider = "0.1.0"
yew
(optional): provides a hook, use_provider
, which simplifies the interaction with the provider when using yew
```rust,norun use ethereumprovider::{Provider, ProviderError}; use web_sys::window;
// create a provider let provider = Provider::new(&window().unwrap())?;
// request accounts let v = provider.request::<()>("ethrequestAccounts".tostring(), None).await?; println!("ethrequestAccounts: {:?}", v); // or use the convenience method let v = provider.requestaccounts().await?; println!("accounts: {:?}", v);
```
```rust,norun use ethereumprovider::yew::use_provider; use yew::prelude::*;
fn Wallet() -> Html { let status = use_provider();
html! {
<div>
{
match status {
Some(status) => match status {
Ok(status) => html! {
<div>
<pre>{ format!("Wallet: {:?}", status) }</pre>
</div>
},
Err(e) => html! { <pre>{ format!("Error: {:?}", e) }</pre> },
},
None => html! { <pre>{ "Loading wallet provider..." }</pre> },
}
}
</div>
}
} ```