7 releases

Uses old Rust 2015

0.9.8 Aug 2, 2017
0.9.7 Jul 21, 2017
0.9.5 Jun 26, 2017

#603 in Network programming

Download history 24/week @ 2020-06-04 18/week @ 2020-06-11 9/week @ 2020-06-25 31/week @ 2020-07-02 35/week @ 2020-07-09 39/week @ 2020-07-16 46/week @ 2020-07-23 20/week @ 2020-07-30 42/week @ 2020-08-06 28/week @ 2020-08-13 29/week @ 2020-08-20 29/week @ 2020-08-27 50/week @ 2020-09-03 27/week @ 2020-09-10 6/week @ 2020-09-17

130 downloads per month
Used in 2 crates


42K SLoC

C++ 32K SLoC // 0.2% comments Visual Studio Project 5K SLoC Rust 1.5K SLoC // 0.0% comments Visual Studio Solution 1K SLoC Automake 857 SLoC // 0.0% comments C 785 SLoC // 0.0% comments Shell 444 SLoC // 0.2% comments Batch 185 SLoC // 0.1% comments RPM Specfile 150 SLoC // 0.1% comments

Rust ZeroMQ bindings.

Travis Build Status Appveyor Build status Coverage Status Apache 2.0 licensed MIT licensed crates.io docs


Release Notes


Currently, rust-zmq requires ZeroMQ 3.2 or newer. For example, on recent Debian-based distributions, you can use the following command to get the prerequiste headers and library installed:

apt install libzmq3-dev

If your OS of choice does not provide packages of a new-enough libzmq, you will first have to install it from source; see https://github.com/zeromq/libzmq/releases.

rust-zmq uses cargo to install. Users should add this to their Cargo.toml file:

zmq = "0.8"

The build normally uses pkg-config to find out about libzmq's location. If that is not available, the environment variable LIBZMQ_PREFIX (or alternatively, LIBZMQ_LIB_DIR and LIBZMQ_INCLUDE_DIR) can be defined to avoid the invocation of pkg-config.


rust-zmq is a pretty straight forward port of the C API into Rust:

extern crate zmq;

fn main() {
    let ctx = zmq::Context::new();

    let mut socket = ctx.socket(zmq::REQ).unwrap();
    socket.send_str("hello world!", 0).unwrap();

You can find more usage examples in https://github.com/erickt/rust-zmq/tree/master/examples.


Install for contributing to rust-zmq:

% git clone https://github.com/erickt/rust-zmq
% cd rust-zmq
% cargo build

Note that the master branch is currently in API-breaking mode while we try to make the API more ergomic and flexible for the 0.9 release series.

This means that pull requests (e.g. bugfixes), which do not need to break API should be submitted for the release/v0.8 branch. This also applies to new features, if they can be implemented in an API-compatible way, the pull request should also aim for release/v0.8. Please submit an issue for missing features before you start coding, so the suitable branch and other potential questions can be clarified up-front.

The reason for using branches, and thus increasing overhead a bit for all involved, is that it's not yet clear how long it will take to reach a point in master that we feel comfortable with releasing as 0.9.0, as we'd like to have the core part of the API more-or-less fixed by then. Using the release/v0.8 branch we can deliver bugfixes and smaller features in the meantime without forcing users to follow master's changing API and to continuously adjust their code to API changes.