walletconnect 0.2.0

WalletConnect client implementation in Rust.
Documentation
use std::error::Error;
use std::process;
use walletconnect::{qr, Client, Metadata, Transaction};

fn main() {
    env_logger::init();
    if let Err(err) = futures::executor::block_on(run()) {
        log::error!("{}", err);
        process::exit(1);
    }
}

async fn run() -> Result<(), Box<dyn Error>> {
    let client = Client::new(
        "examples-qr",
        Metadata {
            description: "WalletConnect-rs terminal QR code example".into(),
            url: "https://github.com/nlordell/walletconnect-rs".parse()?,
            icons: vec!["https://avatars0.githubusercontent.com/u/4210206".parse()?],
            name: "WalletConnect-rs QR Example".into(),
        },
    )?;

    let (accounts, _) = client.ensure_session(qr::print_with_url).await?;

    println!("Connected accounts:");
    for account in &accounts {
        println!(" - {:?}", account);
    }

    let tx = client
        .send_transaction(Transaction {
            from: accounts[0],
            to: Some("000102030405060708090a0b0c0d0e0f10111213".parse()?),
            value: 1_000_000_000_000_000u128.into(),
            ..Transaction::default()
        })
        .await?;

    println!("Transaction sent:\n  https://etherscan.io/tx/{:?}", tx);

    Ok(())
}