// the find
hyperium/h2
HTTP 2.0 client & server implementation for Rust.
h2 is the HTTP/2 implementation underneath hyper — if you're using reqwest or axum, this is already running your connections. It's a protocol-layer library: it handles frames, streams, flow control, and HPACK, but deliberately leaves TLS, TCP, and HTTP/1 upgrade to the caller. Not something you'd use directly unless you're building a custom HTTP stack.
Passes h2spec, which is the actual conformance test suite for HTTP/2 — not many implementations bother. The scope is deliberately narrow: it does the spec and nothing else, which means the surface area for bugs is limited. Active maintenance with commits as recently as this week. The HPACK fixture corpus (cross-validated against nghttp2, node, and multiple Haskell implementations) is unusually thorough for a header compression layer.
The API is low-level enough that using it directly is painful — you're managing `SendStream`/`RecvStream` handles, poll-based flow control, and capacity manually. The documentation on docs.rs covers the types but gives almost no guidance on connection lifecycle or error handling patterns. No HTTP/3 or QUIC path, so if you're building something that needs to evolve beyond HTTP/2, you're starting over. The star count (1.5k) understates its actual usage because most people consume it transitively through hyper, which means issues that only surface in direct usage can linger.