ls-qpack

crates.io docs.rs

QPACK: Field Compression for HTTP/3 (RFC 9204)

Rust implementation based on ls-qpack

Introduction

QPACK is a compressor for headers data used by HTTP/3. It allows correctness in the presence of out-of-order delivery, with flexibility for implementations to balance between resilience against head-of-line blocking and optimal compression ratio.

Example

```rust use lsqpack::decoder::Decoder; use lsqpack::encoder::Encoder; use ls_qpack::StreamId;

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

fn main() { let (encodedheaders, _) = Encoder::new() .encodeall(StreamId::new(0), HEADERS) .unwrap() .into();

let decoded_headers = Decoder::new(0, 0)
    .decode(StreamId::new(0), encoded_headers)
    .unwrap()
    .take()
    .unwrap();

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

} ```