routerify-unixsocket 3.0.0

Use hyperlocal with routerify to add local unix socket support
Documentation
# routerify-unixsocket
[![Crates.io](https://img.shields.io/crates/v/routerify-unixsocket.svg)](https://crates.io/crates/routerify-unixsocket)
[![Docs.rs](https://docs.rs/routerify-unixsocket/badge.svg)](https://docs.rs/routerify-unixsocket)
[![CI](https://github.com/routerify/routerify-unixsocket/workflows/Continuous%20Integration/badge.svg)](https://github.com/routerify/routerify-unixsocket/actions)
[![Coverage Status](https://coveralls.io/repos/github/routerify/routerify-unixsocket/badge.svg?branch=master)](https://coveralls.io/github/routerify/routerify-unixsocket?branch=master)

Routerify <> Hyperlocal

## Usage
Serve unix sockets with routerify

Basic usage works by replacing `RouterService` with `UnixRouterService`, which adapts the 
request in order to be compatible with routerify's `RequestService`.

Since routerify requires an IP `SocketAddr`, the loopback address `127.0.0.1` with port 0 is used as a placeholder. 
In order to access the unix socket's peer address and peer credential, the `UnixRequestExt` extension trait adds methods to the request object.

# Example

```rust
use hyper::{Body, Response, Server};
use hyperlocal::UnixServerExt;
use routerify::{Error, Router};
use routerify_unixsocket::{UnixRequestExt, UnixRouterService};
use std::{fs, path::Path};

#[tokio::main]
async fn main() {
    let path = Path::new("/tmp/hyperlocal.sock");
    if path.exists() {
        fs::remove_file(path).unwrap();
    }

    let router: Router<Body, Error> = Router::builder()
        .get("/", |req| async move {
            let s = format!("You are: {:?}", req.unix_peer_cred());
            Ok(Response::new(Body::from(s)))
        })
        .build()
        .unwrap();

    let service = UnixRouterService::new(router).unwrap();
        Server::bind_unix(path)
            .unwrap()
            .serve(service)
            .await
            .unwrap()
}
```


## License

Licensed under either of

 * Apache License, Version 2.0
   ([LICENSE-APACHE]LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
 * MIT license
   ([LICENSE-MIT]LICENSE-MIT or http://opensource.org/licenses/MIT)

at your option.

## Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in the work by you, as defined in the Apache-2.0 license, shall be
dual licensed as above, without any additional terms or conditions.