2 个不稳定版本
0.2.0 | 2023年8月9日 |
---|---|
0.1.0 | 2023年8月4日 |
#67 in #signer
在 2 个crate中使用(通过ethers-signers-browser-fr…)
28KB
618 代码行
ethereum-provider
本项目实现了一个Provider
类型,该类型封装了浏览器的window.ethereum
以供Rust使用,这对于基于wasm的项目(例如前端)很有用。
安装
cargo add ethereum-provider
ethereum-provider = "0.2.0"
功能
yew
(可选):提供了一个钩子,use_provider
,当使用yew
时简化了与provider的交互。
示例
use ethereum_provider::{Provider, ProviderError};
use web_sys::window;
# async fn foo() -> Result<(), Box<dyn std::error::Error>> {
// create a provider
let provider = Provider::new(&window().unwrap())?;
// request accounts
let v = provider.request::<()>("eth_requestAccounts".to_string(), None).await?;
println!("eth_requestAccounts: {:?}", v);
// or use the convenience method
let v = provider.request_accounts().await?;
println!("accounts: {:?}", v);
# Ok(())
# }
Yew示例
use ethereum_provider::yew::use_provider;
use yew::prelude::*;
#[function_component]
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>
}
}
依赖项
~7–11MB
~217K SLoC