Installation
Applications depend on exactly one crate: the etl facade. It re-exports
the engine (etl-core) at the root and forwards connector crates behind
cargo features, so your dependency list stays a single line no matter which
connectors you use.
[dependencies]
etl = { version = "0.1", features = ["full"] }
serde = { version = "1", features = ["derive"] }
[dev-dependencies]
etl-test = "0.1"
serde is what your record types derive Deserialize/Serialize with;
etl-test provides the in-memory source and capturing sink you test
pipelines against (see Testing pipelines
and the memory connector).
Feature matrix
The default feature set is empty — a bare etl gives you the full engine
(operator chains, checkpointing, backpressure, metrics, the pipeline
builder) with no connectors. Enable what you need:
| Feature | Enables |
|---|---|
kafka | etl::kafka — Kafka source built on rdkafka (single consumer, partition-queue lanes). See Kafka connector. |
clickhouse | etl::clickhouse — ClickHouse sink (RowBinary encoding, dedup tokens, replica rotation). See ClickHouse connector. |
clickhouse-uuid | uuid::Uuid fields for UUID columns (implies clickhouse). |
clickhouse-chrono | chrono fields for Date/DateTime/DateTime64/Time columns (implies clickhouse). |
clickhouse-time | time crate fields for the same date/time columns (implies clickhouse). |
clickhouse-rust-decimal | rust_decimal::Decimal conversions for Decimal columns (implies clickhouse). |
avro | etl::avro — Avro deserialization (Confluent wire format, schema-registry client). See Avro connector. |
avro-fast | Opt-in single-pass Avro decode backend with zero-copy records (implies avro). Deliberately not part of full — it carries a license consideration; see the fast backend. |
full | All connectors: avro + kafka + clickhouse. |
The quickstart needs no features at all; the flagship Kafka → Avro →
ClickHouse pipeline needs full (or the three connector features
individually).
[!NOTE] The connector crates wrap 0.x dependencies (
rdkafka,clickhouse,apache-avro). None of their types appear inetl's public trait bounds, so their breaking releases do not become your breaking releases. Where a connector re-exports its underlying crate for advanced use, that re-export is documented as exempt from etl-rs's stability promises.
Toolchain requirements
- MSRV: Rust 1.94 — checked in CI, on a rolling N-2 policy.
- Edition 2024.
- The
kafkafeature buildsrdkafka, which compiles librdkafka from vendored sources — a working C toolchain on the build host is all it needs (the standardrustDocker images qualify), and the first build takes a few minutes. The Docker guide shows the flagship build image.
Verifying the install
cargo check
Then head to the Quickstart — it runs a full pipeline with zero infrastructure, using only what you just installed.
API documentation
The rustdoc for the etl crate on docs.rs is built with all features
enabled and is the reference for every type this guide mentions. This guide
teaches the concepts and contracts; docs.rs owns the signatures.