Skip to main content

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:

FeatureEnables
kafkaetl::kafka — Kafka source built on rdkafka (single consumer, partition-queue lanes). See Kafka connector.
clickhouseetl::clickhouse — ClickHouse sink (RowBinary encoding, dedup tokens, replica rotation). See ClickHouse connector.
clickhouse-uuiduuid::Uuid fields for UUID columns (implies clickhouse).
clickhouse-chronochrono fields for Date/DateTime/DateTime64/Time columns (implies clickhouse).
clickhouse-timetime crate fields for the same date/time columns (implies clickhouse).
clickhouse-rust-decimalrust_decimal::Decimal conversions for Decimal columns (implies clickhouse).
avroetl::avro — Avro deserialization (Confluent wire format, schema-registry client). See Avro connector.
avro-fastOpt-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.
fullAll 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 in etl'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 kafka feature builds rdkafka, which compiles librdkafka from vendored sources — a working C toolchain on the build host is all it needs (the standard rust Docker 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.