6个版本

0.1.4 2023年12月20日
0.1.3 2023年9月16日
0.1.2 2023年6月24日
0.1.1 2023年5月26日
0.1.0-alpha2022年10月16日

#1174 in 网络编程

Download history 728/week @ 2024-04-20 49/week @ 2024-04-27 10/week @ 2024-05-04 6/week @ 2024-05-11 21/week @ 2024-05-18 5/week @ 2024-05-25 29/week @ 2024-06-01 32/week @ 2024-06-08 26/week @ 2024-06-15 9/week @ 2024-06-22 13/week @ 2024-06-29 3/week @ 2024-07-13 48/week @ 2024-07-20 50/week @ 2024-07-27 12/week @ 2024-08-03

113 每月下载量
2 个crate中使用(通过 wtransport-proto_lightyea…

MIT/Apache

700KB
10K SLoC

C 9K SLoC // 0.0% comments Rust 895 SLoC // 0.0% comments Perl 339 SLoC // 0.1% comments Shell 52 SLoC // 0.1% comments

ls-qpack

crates.io docs.rs

QPACK:HTTP/3的字段压缩(RFC 9204

基于ls-qpack的Rust实现

简介

QPACK是用于HTTP/3的头部数据压缩器。它允许在数据乱序传输的情况下保持正确性,同时为实现提供了在抵抗头阻塞和最优压缩比之间进行平衡的灵活性。

示例

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);
}

依赖项

~0–2MB
~41K SLoC