kafrust 0.2.0

A pure Rust Kafka client with no librdkafka or C toolchain dependency.
Documentation
use kafrust::{Acks, ProducerConfig, ProducerRecord};

#[tokio::main]
async fn main() -> kafrust::Result<()> {
    let bootstrap =
        std::env::var("KAFRUST_BOOTSTRAP_SERVERS").unwrap_or_else(|_| "localhost:9092".to_owned());
    let topic = std::env::var("KAFRUST_TOPIC").unwrap_or_else(|_| "kafrust-smoke".to_owned());
    let count = std::env::var("KAFRUST_BATCH_COUNT")
        .ok()
        .and_then(|value| value.parse::<usize>().ok())
        .unwrap_or(3);

    let mut producer = ProducerConfig::new([bootstrap])
        .client_id("kafrust-producer-batch-example")
        .acks(Acks::Leader)
        .build()
        .await?;

    let records = (0..count)
        .map(|index| {
            ProducerRecord::to(topic.clone())
                .key(format!("kafrust-batch-key-{index}"))
                .value(format!("hello from kafrust batch {index}"))
        })
        .collect::<Vec<_>>();

    let metadata = producer.send_batch(records).await?;
    for metadata in metadata {
        println!(
            "produced {}-{}@{}",
            metadata.topic(),
            metadata.partition(),
            metadata.offset()
        );
    }

    Ok(())
}