Implementation:Fede1024 Rust rdkafka Rdkafka Sys Crate Root
| Knowledge Sources | |
|---|---|
| Domains | FFI, Crate_Architecture, Build_System |
| Last Updated | 2026-02-07 19:00 GMT |
Overview
Crate root for the rdkafka-sys FFI package that re-exports low-level bindings, helper utilities, and type aliases while conditionally linking optional native dependencies.
Description
The rdkafka-sys crate root (lib.rs) serves as the entry point for the low-level FFI layer. It declares three submodules (bindings, helpers, types) and uses glob re-exports (pub use bindings::*, pub use helpers::*, pub use types::*) to expose all symbols directly from the crate root. It conditionally links external system crate dependencies (openssl-sys, sasl2-sys, libz-sys, curl-sys, zstd-sys, lz4-sys) via extern crate declarations gated behind Cargo features (ssl, gssapi, libz, curl, zstd, external-lz4). The module documentation covers version format, build features, known dependency issues, and Windows support notes.
Usage
This crate is a dependency of the higher-level rdkafka crate. Users rarely depend on it directly unless they need raw FFI access to librdkafka functions not wrapped by the safe API. Add it as a dependency when writing custom unsafe extensions or when the safe wrapper does not expose needed functionality.
Code Reference
Source Location
- Repository: Fede1024_Rust_rdkafka
- File: rdkafka-sys/src/lib.rs
- Lines: 1-128
Signature
//! Low-level bindings to librdkafka
//! Version format: X.Y.Z+RX.RY.RZ (crate + librdkafka version)
#[cfg(feature = "ssl")]
extern crate openssl_sys;
#[cfg(feature = "gssapi")]
extern crate sasl2_sys;
#[cfg(feature = "libz")]
extern crate libz_sys;
#[cfg(feature = "curl")]
extern crate curl_sys;
#[cfg(feature = "zstd")]
extern crate zstd_sys;
#[cfg(feature = "external-lz4")]
extern crate lz4_sys;
pub mod bindings;
pub mod helpers;
pub mod types;
pub use bindings::*;
pub use helpers::*;
pub use types::*;
Import
// Direct dependency on rdkafka-sys
use rdkafka_sys::*;
// or selectively:
use rdkafka_sys::{RDKafkaErrorCode, RDKafka, RDKafkaConf};
I/O Contract
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| Cargo features | Feature flags | No | Optional: ssl, gssapi, libz, curl, zstd, external-lz4 |
| librdkafka native library | Shared/static | Yes | Built by build.rs or dynamically linked |
Outputs
| Name | Type | Description |
|---|---|---|
| Public API surface | All symbols from bindings, helpers, types | Complete FFI interface to librdkafka |
Usage Examples
Adding rdkafka-sys as Dependency
[dependencies]
rdkafka-sys = { version = "4.7", features = ["ssl", "libz"] }
Using Direct FFI Access
use rdkafka_sys::*;
unsafe {
let version = rd_kafka_version();
println!("librdkafka version: 0x{:08x}", version);
}