6 releases
0.1.4 | Dec 20, 2023 |
---|---|
0.1.3 | Sep 16, 2023 |
0.1.2 | Jun 24, 2023 |
0.1.1 | May 26, 2023 |
0.1.0-alpha | Oct 16, 2022 |
#1697 in Network programming
29 downloads per month
Used in 2 crates
(via wtransport-proto_lightyea…)
700KB
10K
SLoC
ls-qpack
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
use ls_qpack::decoder::Decoder;
use ls_qpack::encoder::Encoder;
use ls_qpack::StreamId;
const HEADERS: [(&str, &str); 2] = [(":status", "404"), ("foo", "bar")];
fn main() {
let (encoded_headers, _) = Encoder::new()
.encode_all(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);
}
Dependencies
~0–2.2MB
~44K SLoC