iron 0.0.7

Middleware-Oriented, Concurrency Focused Web Development in Rust.
Iron [![Build Status](](

> Middleware-Oriented, Concurrency Focused Web Development in Rust.

## Response Timer Example

struct ResponseTime;

impl Assoc<u64> for ResponseTime {}

impl BeforeMiddleware for ResponseTime {
    fn before(&self, req: &mut Request) -> IronResult<()> {
        req.extensions.insert::<ResponseTime, u64>(precise_time_ns());

impl AfterMiddleware for ResponseTime {
    fn after(&self, req: &mut Request, _: &mut Response) -> IronResult<()> {
        let delta = precise_time_ns() - *req.extensions.find::<ResponseTime, u64>().unwrap();
        println!("Request took: {} ms", (delta as f64) / 1000000.0);

Iron is a high level web framework built in and for Rust

Iron does not come bundled with any middleware - instead, Iron is a robust and efficient framework for plugging in middleware.

**Iron focuses on providing a clean API for creating middleware and integrating
them in Iron servers.**

Iron averages [84,000+ requests per second for hello world](

## [Overview](

Iron aims to fill a void in the Rust web stack - a high level framework that is
*extensible* and makes organizing complex server code easy.

Middleware is painless to build, and the [core bundle](
already includes:
- [Routing](
- [Mounting](
- [Static File Serving](
- [JSON Body Parsing](
- [URL Encoded Data Parsing](
- [Logging](
- [Cookies](
- [Sessions](
- [Persistent Storage](

This allows for insanely flexible and powerful setups and allows nearly all
of Iron’s features to be swappable - you can even change the middleware
resolution algorithm by swapping in your own `Chain`.

## Installation

If you're using `Cargo`, just add Iron to your `Cargo.toml`:


git = ""

Otherwise, just clone this repo, `cargo build`, and the rlib will be in your `target` directory.

## [Documentation](

Along with the [online documentation](,
you can build a local copy with `cargo doc`.

## [More Examples](/examples)

Check out the [examples](/examples) directory!

You can compile all of the examples with `cargo test`. The binaries will be placed in `target/test/`.

## Get Help

One of us ([@reem](, [@zzmp](,
[@theptrk](, [@mcreinhard](
is usually on `#iron` on the mozilla irc. Come say hi and ask any questions you might have.
We are also usually on `#rust` and `#rust-webdev`.