Dup Ver Goto 📝

Rust Web Server example 01

To
54 lines, 192 words, 1567 chars Page 'WebServer_01' does not exist.

This code came via ChatGPT. ChatGPT made a slight error with the Cargo.toml. The actual Rust worked fine, and essentially is just regurgitated from the official docs. We got

use hyper::{Body, Request, Response, Server};
use hyper::service::{make_service_fn, service_fn};
use std::convert::Infallible;

async fn handle_request(_: Request<Body>) -> Result<Response<Body>, Infallible> {
    // Create a response with a simple message
    let response = Response::builder()
        .status(200)
        .header("Content-Type", "text/plain")
        .body(Body::from("Hello, Rust Web Server!"))
        .unwrap();

    Ok(response)
}

#[tokio::main]
async fn main() {
    // Create a new server bound to 127.0.0.1:3000
    let addr = ([127, 0, 0, 1], 3000).into();
    let make_svc = make_service_fn(|_conn| {
        async { Ok::<_, Infallible>(service_fn(handle_request)) }
    });

    let server = Server::bind(&addr).serve(make_svc);

    println!("Server running at http://127.0.0.1:3000/");

    if let Err(e) = server.await {
        eprintln!("Server error: {}", e);
    }
}

and the Cargo.toml we got was

[package]
name = "web1"
version = "0.1.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
hyper = "0.14"
tokio = { version = "1", features = ["full"] }

which needeed the hyper = line to be fixed to

hyper = { version = "0.14", features = ["http2","server","tcp"] }

and then this compiled and ran.