1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
// SPDX-License-Identifier: Apache-2.0
// Copyright 2026 ZeroDDS Contributors
//! Crate `zerodds-hpack`. Safety classification: **STANDARD**.
//!
//! HPACK (RFC 7541) Header-Compression-Codec fuer HTTP/2 — no_std,
//! `forbid(unsafe_code)`. Implementiert die Wire-Schicht aus
//! Variable-Length-Integer-Coding (§5.1), String-Literal-Coding
//! (§5.2) inkl. statischem Huffman-Code (Appendix B), Static- und
//! Dynamic-Table (§2.3, §4) sowie alle vier Header-Field-
//! Repraesentationen (§6: Indexed / Literal-with-Indexing /
//! Literal-without-Indexing / Literal-Never-Indexed).
//!
//! Spec: RFC 7541 §5 (Primitive Type Representations) + §6 (Binary
//! Format).
//!
//! ## Schichten-Position
//!
//! Layer 5 — Bridges. Substrat fuer:
//!
//! - [`zerodds-http2`](../zerodds_http2/index.html) — RFC 9113
//! Framing + Stream-State-Machine.
//! - [`zerodds-grpc-bridge`](../zerodds_grpc_bridge/index.html) —
//! gRPC-over-HTTP/2 Length-Prefixed-Message-Codec.
//!
//! ## Public API (Stand 1.0.0-rc.1)
//!
//! - [`Encoder`] / [`EncoderError`] — High-Level-Encoder mit eigener
//! Dynamic-Table.
//! - [`Decoder`] / [`DecoderError`] — High-Level-Decoder mit eigener
//! Dynamic-Table und Size-Update-Handling.
//! - [`Table`] / [`HeaderField`] / [`STATIC_TABLE`] /
//! [`StaticTableEntry`] — Static- + Dynamic-Table-Modelle (§2.3).
//! - [`encode_integer`] / [`decode_integer`] — Variable-Length-
//! Integer-Coding-Primitive (§5.1).
//! - [`encode_string`] / [`decode_string`] — String-Literal-Coding-
//! Primitive (§5.2) mit optionalem Huffman-Pfad.
//! - [`huffman::encode`] / [`huffman::decode`] /
//! [`huffman::HuffmanError`] — Static-Huffman-Code aus Appendix B
//! (Feature-gated nicht; ist fuer no_std erforderlich).
//! - [`integer::IntegerError`] / [`string::StringError`] —
//! Modul-private Fehler-Typen, ueber die Module-Pfade exposed.
//!
//! ## Beispiel
//!
//! ```rust
//! use zerodds_hpack::{Decoder, Encoder, HeaderField};
//!
//! let mut encoder = Encoder::new();
//! let mut decoder = Decoder::new();
//!
//! let headers = vec![
//! HeaderField { name: ":method".into(), value: "GET".into() },
//! HeaderField { name: ":scheme".into(), value: "https".into() },
//! HeaderField { name: "custom-key".into(), value: "custom-value".into() },
//! ];
//!
//! let wire = encoder.encode(&headers);
//! let decoded = decoder.decode(&wire).expect("roundtrip");
//! assert_eq!(decoded, headers);
//! ```
extern crate alloc;
extern crate std;
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;