binance 0.21.2

Rust Library for the Binance API
Documentation
use criterion::{criterion_group, criterion_main, Criterion};

use binance::websockets::*;

use core::time::Duration;

fn criterion_benchmark(c: &mut Criterion) {
    let mut group = c.benchmark_group("websockets-decoder");

    let all_symbols_json = reqwest::blocking::get("https://api.binance.com/api/v3/ticker/price")
        .unwrap()
        .text()
        .unwrap();

    let btc_symbol_json =
        reqwest::blocking::get("https://api.binance.com/api/v3/ticker/price?symbol=BTCUSDT")
            .unwrap()
            .text()
            .unwrap();

    let mut web_socket_subscribed: WebSockets<'_> =
        WebSockets::new(|_event: WebsocketEvent| Ok(()));
    web_socket_subscribed.connect("!ticker@arr").unwrap();

    let mut web_socket: WebSockets<'_> = WebSockets::new(|_event: WebsocketEvent| Ok(()));

    group.sample_size(200);
    group.measurement_time(Duration::new(35, 0));
    group.bench_function("handle_msg all symbols", |b| {
        b.iter(|| web_socket_subscribed.test_handle_msg(&all_symbols_json));
    });
    group.bench_function("handle_msg BTCUSDT symbol", |b| {
        b.iter(|| web_socket.test_handle_msg(&btc_symbol_json));
    });
    group.finish();
}

criterion_group!(benches, criterion_benchmark);
criterion_main!(benches);