# Hacking on rust-zmq
This file is intended to collect useful knowledge when hacking on the
rust-zmq crate.
If you intend to provide a contribution, please check the
[contribution guidelines].
[contribution guidelines]: ./CONTRIBUTING.md
## Regenerating the C bindings
The C low-level, unsafe C binding is provided by the `zmq-sys` crate,
also hosted in this repository. The bindings are only partially
auto-generated, to allow getting some platform-specific details
right.
The autogenerated part produced by the `bindgen` crate is stored in
the [`ffi.rs`] file inside the `zmq-sys` crate, and is created using
the `zmq.h` header file; using the following command:
```sh
bindgen \
--with-derive-default \
--whitelist-function "^zmq_.*" \
--whitelist-type "^zmq_.*" \
--whitelist-var "^ZMQ_.*" ~/src/zeromq-4.1.6/include/zmq.h
> zmq-sys/src/ffi.rs
```
[`ffi.rs`]: ./zmq-sys/src/ffi.rs