uhttp_request 0.5.1

HTTP request start-line and header field parsers
Documentation
# uhttp_request -- HTTP request start-line and header field parsers

[Documentation](https://docs.rs/uhttp_request)

This crate provides barebone, slice-based parsers for extracting [request
line](https://tools.ietf.org/html/rfc7230#section-3.1.1) components and [header
fields](https://tools.ietf.org/html/rfc7230#section-3.2) from HTTP requests.

In general, components are extracted along defined delimiters, but further processing
and syntax validation is left to higher layers.

## Example

```rust
use uhttp_request::{RequestLine, Headers};

let req = b"GET /abc?k=v HTTP/1.1\r\nHost: example.com\r\nAccept: text/*\r\n\r\nbody";

let (reqline, rest) = RequestLine::new(req).unwrap();
assert_eq!(reqline.method, "GET");
assert_eq!(reqline.target, "/abc?k=v");
assert_eq!(reqline.version, "HTTP/1.1");

let mut headers = Headers::new(rest);

let h = headers.next().unwrap().unwrap();
assert_eq!(h.name, "Host");
assert_eq!(h.val, b" example.com");

let h = headers.next().unwrap().unwrap();
assert_eq!(h.name, "Accept");
assert_eq!(h.val, b" text/*");

assert!(headers.next().is_none());

let rest = headers.into_inner();
assert_eq!(rest, b"body");
```

## Usage

This [crate](https://crates.io/crates/uhttp_request) can be used through cargo by adding
it as a dependency in `Cargo.toml`:

```toml
[dependencies]
uhttp_request = "0.5.1"
```
and importing it in the crate root:

```rust
extern crate uhttp_request;
```