Skip to content

Provide example on how to use hyper 1.0.0 with tower layers #3154

Open
@o-agassizii

Description

@o-agassizii

Version
1.0.0-rc.3

Platform
Not relevant

Description
Can some of the examples for hyper 1.0.0 show how to make use of tower layers with hyper 1.0.0-rc.3?

All of the examples I can find online where people are using older versions of hyper with tower rely on the higher level Server API.

How do you use the lower level hyper 1.0.0 API like in https://hyper.rs/guides/1/server/hello-world/

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
    let addr = SocketAddr::from(([127, 0, 0, 1], 3000));

    // We create a TcpListener and bind it to 127.0.0.1:3000
    let listener = TcpListener::bind(addr).await?;

    // We start a loop to continuously accept incoming connections
    loop {
        let (stream, _) = listener.accept().await?;

        // Spawn a tokio task to serve multiple connections concurrently
        tokio::task::spawn(async move {
            // Finally, we bind the incoming connection to our `hello` service
            if let Err(err) = http1::Builder::new()
                // `service_fn` converts our function in a `Service`
                .serve_connection(stream, service_fn(hello))
                .await
            {
                println!("Error serving connection: {:?}", err);
            }
        });
    }
}

with tower layers?

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-docsArea: documentation.E-easyEffort: easy. A task that would be a great starting point for a new contributor.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions