#bindings #ffi #zeromq #low-level #zmq-pw

sys zmq-pw-sys

对zeromq库的低级别绑定

8个版本

使用旧Rust 2015

0.9.8 2017年8月2日
0.9.7 2017年7月21日
0.9.5 2017年6月26日

#28#zeromq


3 个crate中(通过 zmq-pw)使用

MIT/Apache

2MB
42K SLoC

C++ 32K SLoC // 0.2% comments Visual Studio Project 5K SLoC M4 1.5K SLoC // 0.3% comments Visual Studio Solution 1K SLoC Automake 858 SLoC // 0.0% comments C 786 SLoC // 0.0% comments Shell 445 SLoC // 0.2% comments Rust 436 SLoC // 0.0% comments Forge Config 255 SLoC // 0.9% comments RPM Specfile 151 SLoC // 0.1% comments Batch 95 SLoC // 0.1% comments Bitbake 50 SLoC

包含 (神秘的autoconf代码,25KB) libzmq-pw/configure.ac

Rust ZeroMQ绑定。

Travis Build Status Appveyor Build status Coverage Status Apache 2.0 licensed MIT licensed docs

文档

发布说明

安装

目前,rust-zmq需要ZeroMQ 3.2或更高版本。例如,在基于Debian的较新发行版中,可以使用以下命令来获取所需的头文件和库

apt install libzmq3-dev

如果您的操作系统没有提供足够新的libzmq包,您将首先需要从源代码中安装它;请参阅 https://github.com/zeromq/libzmq/releases.

rust-zmq使用 cargo 进行安装。用户应在他们的 Cargo.toml 文件中添加以下内容

[dependencies]
zmq = "0.8"

构建通常使用 pkg-config 来查找libzmq的位置。如果不可用,可以定义环境变量 LIBZMQ_PREFIX(或替代地,LIBZMQ_LIB_DIRLIBZMQ_INCLUDE_DIR)以避免调用 pkg-config

用法

rust-zmq 是将C API直接移植到Rust的相当直接的方法

extern crate zmq;

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

    let mut socket = ctx.socket(zmq::REQ).unwrap();
    socket.connect("tcp://127.0.0.1:1234").unwrap();
    socket.send_str("hello world!", 0).unwrap();
}

您可以在 https://github.com/erickt/rust-zmq/tree/master/examples 中找到更多使用示例。

贡献

为贡献rust-zmq安装

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

请注意,master 分支目前处于API破坏模式,我们正在尝试使API在 0.9 发布系列中更加简洁和灵活。

这意味着,不需要破坏API的pull请求(例如错误修复)应提交到 release/v0.8 分支。这也适用于新功能,如果它们可以以API兼容的方式进行实现,pull请求也应针对 release/v0.8。请在开始编码之前提交一个关于缺少功能的issue,以便可以事先澄清合适的分支和其他潜在问题。

使用分支的原因,以及因此为所有相关方带来的一点点开销,是因为我们还没有弄清楚需要多长时间才能到达一个点,在 master 中,我们感到舒适将其作为 0.9.0 版本发布,我们希望到那时API的核心部分基本固定。使用 release/v0.8 分支,我们可以在其间交付修复bug和较小的功能,而无需强制用户遵循master的API变化,并不断地调整他们的代码以适应API的变化。

依赖项