#http #low-level #experimental #http1 #server

outfall

Experimental low-level HTTP Library for Rust

1 unstable release

new 0.0.1 Nov 18, 2024

#8 in #http1

MIT license

10KB
151 lines

outfall

Experimental low-level HTTP Library for Rust

CI

Getting Started

[dependencies]
outfall = "0.0.1"
tokio = "1.41.1"
use std::io::Error;
use tokio::io;
use tokio::net::TcpListener;
use outfall::server::http1;
use bytes::Bytes;
use http::{
    Request, 
    Response
};

async fn request_handler(_req: Request<Bytes>) -> io::Result<Response<Bytes>> {
    Response::builder()
        .status(200)
        .body("Hello World!".into())
        .map_err(|_| Error::new(io::ErrorKind::Other, "Unable to create a response"))
}

#[tokio::main]
async fn main() -> io::Result<()> {
    let tcp_listener = TcpListener::bind("127.0.0.1:7878").await?;

    loop {
        let (stream, _) = tcp_listener.accept().await?;

        tokio::spawn(async move {
            let conn = http1::Connection::new(stream);
            conn.run(request_handler).await;
        });
    }
}

Dependencies

~3–11MB
~104K SLoC