10 releases
Uses old Rust 2015
0.3.2 | May 24, 2018 |
---|---|
0.3.1 | Dec 23, 2016 |
0.3.0 | Oct 10, 2016 |
0.2.4 | Jun 13, 2016 |
0.2.0 | Jul 10, 2015 |
#23 in #streaming-parser
487 downloads per month
Used in 13 crates
(2 directly)
220KB
6K
SLoC
HttpMuncher: Rust Streaming HTTP parser
Rust wrapper for NodeJS http-parser library.
It's intended to be used as an HTTP/1.x protocol handler in Rust-based web servers.
Motivation
Why not write a brand new HTTP parser from scratch in Rust or just use an existing crate such as httparse?
Here's why:
- NodeJS HTTP parser library is based on a full-featured and robust nginx's HTTP parser, and it's safe, fast, and lightweight by design;
- It's compatible with HTTP/1.1, including upgrade connections and chunked responses;
- I haven't found a decent HTTP parser that is capable of streamed parsing, i.e. the one that can eagerly use partial data that comes from a TCP socket;
- Rust's FFI has little to no overhead;
- In most cases, it's silly to reinvent the wheel;
- It was a lot of fun trying to learn Rust along the way. :)
Usage
Add the library to your Cargo.toml
dependencies section:
[dependencies]
http-muncher = "0.3"
Or, for the edge version:
[dependencies]
http-muncher = {git = "https://github.com/nbaksalyar/rust-streaming-http-parser"}
You can find usage example in examples/parser.rs (run it by executing cargo run --example parser
) and in the library tests.
API documentation
You can find API docs here.
Alternative libraries
- http-parser-rs - Rust port of NodeJS HTTP parser (without FFI usage).
- httparse - pure Rust HTTP parser implementation.
License
The MIT License (MIT)
Copyright (c) 2015 Nikita Baksalyar <nikita.baksalyar@gmail.com>
Dependencies
~0.4–325KB