ls-qpack-rs 0.2.2

QPACK Field Compression for HTTP/3 (RFC 9204)
Documentation
use ls_qpack::decoder::Decoder;
use ls_qpack::encoder::Encoder;
use ls_qpack::StreamId;

const HEADERS: [(&str, &str); 3] = [(":status", "404"), ("foo", "bar"), ("foo", "bar")];

fn main() {
    let mut encoder = Encoder::new();
    let sdtc_data = encoder.configure(1024, 1024, 1).unwrap();

    let (encoded_hdr_data, encoded_stream_data) = encoder
        .encode_all(StreamId::new(0), HEADERS)
        .unwrap()
        .into();

    println!("Encoding ratio: {}", encoder.ratio());

    let mut decoder = Decoder::new(1024, 1);
    decoder.feed(sdtc_data).unwrap();

    let decoder_status = decoder.decode(StreamId::new(0), encoded_hdr_data).unwrap();

    assert!(decoder_status.is_blocked());
    println!("Decoder blocked. Stream data needed");

    decoder.feed(encoded_stream_data).unwrap();

    let decoded_hdr = decoder
        .unblocked(StreamId::new(0))
        .unwrap()
        .unwrap()
        .take()
        .unwrap();

    println!("Decoded header: {:?}", decoded_hdr);
}