iTranslated by AI
The content below is an AI-generated translation. This is an experimental feature, and may contain errors. View original article
🦔
[Rust] Compressing headers into QPACK format with ls-qpack
Create a Rust project and add ls-qpack
cargo init
cargo add ls-qpack
Paste the code
src/main.rs
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() {
println!("Original header: {:?}", HEADERS);
let (encoded_headers, _) = Encoder::new()
.encode_all(StreamId::new(0), HEADERS)
.unwrap()
.into();
println!("Eecoded header: {:?}", encoded_headers);
let decoded_headers = Decoder::new(0, 0)
.decode(StreamId::new(0), encoded_headers)
.unwrap()
.take()
.unwrap();
println!("Decoded header: {:?}", decoded_headers);
}
Try building and running it
cargo build
cargo run
Finished dev [unoptimized + debuginfo] target(s) in 0.03s
Running `target/debug/rust-project`
Original header: [(":status", "404"), ("foo", "bar")]
Eecoded header: [0, 0, 219, 42, 148, 231, 3, 98, 97, 114]
Decoded header: [Header { name: ":status", value: "404" }, Header { name: "foo", value: "bar" }]
Discussion