# H2 A Tokio aware, HTTP/2 client & server implementation for Rust. [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT) [![Crates.io](https://img.shields.io/crates/v/h2.svg)](https://crates.io/crates/h2) [![Documentation](https://docs.rs/h2/badge.svg)][dox] More information about this crate can be found in the [crate documentation][dox]. [dox]: https://docs.rs/h2 ## Features * Client and server HTTP/2 implementation. * Implements the full HTTP/2 specification. * Passes [h2spec](https://github.com/summerwind/h2spec). * Focus on performance and correctness. * Built on [Tokio](https://tokio.rs). ## Non goals This crate is intended to only be an implementation of the HTTP/2 specification. It does not handle: * Managing TCP connections * HTTP 1.0 upgrade * TLS * Any feature not described by the HTTP/2 specification. This crate is now used by [hyper](https://github.com/hyperium/hyper), which will provide all of these features. ## Usage To use `h2`, first add this to your `Cargo.toml`: ```toml [dependencies] h2 = "0.3" ``` Next, add this to your crate: ```rust extern crate h2; use h2::server::Connection; fn main() { // ... } ``` ## FAQ **How does h2 compare to [solicit] or [rust-http2]?** The h2 library has implemented more of the details of the HTTP/2 specification than any other Rust library. It also passes the [h2spec] set of tests. The h2 library is rapidly approaching "production ready" quality. Besides the above, Solicit is built on blocking I/O and does not appear to be actively maintained. **Is this an embedded Java SQL database engine?** [No](https://www.h2database.com). [solicit]: https://github.com/mlalic/solicit [rust-http2]: https://github.com/stepancheg/rust-http2 [h2spec]: https://github.com/summerwind/h2spec