Licensed under either of * Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0) * MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT) at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you shall be dual licensed as above, without any additional terms or conditions.
Instead of doing this: (pseudo-code)
```js server.add_middleware(function() { // middleware 1 });
server.add_middleware(function() { // middleware 2 });
server.add_middleware(function() { // middleware 3 }); ```
In rouille you just handle each request entirely manually:
```rust // initialize everything here
rouille::start_server(..., move |request| { // middleware 1
// middleware 2
// middleware 3
}); ```
The state of async I/O, green threads, coroutines, etc. in Rust is still blurry.
The rouille library just ignores this optimization and focuses on providing an easy-to-use API instead.
Once async I/O has been figured out, rouille will be updated to take this into account. For the moment it favors usability over performances.
It should be trivial to integrate a database or templates to your web server written with rouille. Moreover plugins need maintenance tend to create a dependency hell. It is generally just better not to use plugins.
I'm using this library to rewrite an existing medium-sized website.