#http-3 #qpack #quic #networking #rfc-9204

sys ls-qpack-sys

QPACK (RFC 9204) Rust绑定到C库ls-qpack

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日

#3 in #qpack

Download history 53/week @ 2024-03-12 18/week @ 2024-03-19 12/week @ 2024-03-26 48/week @ 2024-04-02 18/week @ 2024-04-09 4154/week @ 2024-04-16 236/week @ 2024-04-23 51/week @ 2024-04-30 9/week @ 2024-05-07 8/week @ 2024-05-14 28/week @ 2024-05-21 6/week @ 2024-05-28 37/week @ 2024-06-04 47/week @ 2024-06-11 17/week @ 2024-06-18 2/week @ 2024-06-25

108 每月下载次数
3 个crate中使用 (通过 ls-qpack)

MIT/Apache

665KB
9K SLoC

C 9K SLoC // 0.0% comments Perl 340 SLoC // 0.1% comments Rust 53 SLoC // 0.0% comments Shell 53 SLoC // 0.1% comments

ls-qpack

crates.io docs.rs

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

Rust实现,基于 ls-qpack

简介

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