Documentation
# A simple wrapper for hyper
##### Rhodium allows to create hyper servers as a stack of Handlers. 
Each Handler has its own `handle_request` and `handle_response` methods.
Handlers are executed by order while handling a request, and by the reverse order while handling the response.
The order in which `handle_request` and `handle_response` functions are executed is summarized in the next flow diagram:

![Rhodium](rhodium.jpg)

Every Handler is a struct implementing de `RhodHandler` trait, while the Service is a struct implementing the `RhodService` trait.

**RhodHandlers + RhodService conforms a RhodStack**

To use Rhodium, you just have to create a `RhodStack`, set the socket address where the hyper server will listen,
and the protocol to be used (HTTP).

If the Handler i returns an error while handling a request:
     `catch_request` functions are called for the next handlers (Handler i+1, i+2, ..., n), and then the flow is ended.
     
If the `Service` returns an error:
     the flow is ended
If the `Handler i` returns an error while handling a response:
     `catch_response` functions are called for the next handlers (Handler i-1, i-2, ..., 1), and then the flow is ended.
     
## Testing
```
cargo test
```