zeromq 0.6.0

A native Rust implementation of ZeroMQ
Documentation
mod async_helpers;

use std::convert::TryInto;
use std::env;
use std::error::Error;
use zeromq::{Socket, SocketRecv};

#[async_helpers::main]
async fn main() -> Result<(), Box<dyn Error>> {
    let args: Vec<String> = env::args().collect();
    let mut subscription = "";
    if args.len() > 1 {
        subscription = &args[1];
    }
    let mut socket = zeromq::SubSocket::new();
    socket
        .connect("tcp://127.0.0.1:5556")
        .await
        .expect("Failed to connect");

    socket.subscribe(subscription).await?;

    loop {
        let recv = socket.recv().await?;
        let stock: String = String::from_utf8(recv.get(0).unwrap().to_vec())?;
        let price: u32 = u32::from_ne_bytes(
            recv.get(1)
                .unwrap()
                .to_vec()
                .try_into()
                .expect("Couldn't deserialze u32 from data"),
        );
        println!("{}: {}", stock, price);
    }
}