🦔
【Rust】ls-qpack でヘッダーを QPACK 形式に圧縮する
Rust のプロジェクトをつくり、ls-qpack を追加する
cargo init
cargo add ls-qpack
コードを貼る
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);
}
ビルドして実行してみる
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