diff --git a/examples/routes-and-handlers-close-together/Cargo.toml b/examples/routes-and-handlers-close-together/Cargo.toml new file mode 100644 index 00000000..fa8c14ce --- /dev/null +++ b/examples/routes-and-handlers-close-together/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "example-routes-and-handlers-close-together" +version = "0.1.0" +edition = "2018" +publish = false + +[dependencies] +axum = { path = "../../axum" } +tokio = { version = "1.0", features = ["full"] } diff --git a/examples/routes-and-handlers-close-together/src/main.rs b/examples/routes-and-handlers-close-together/src/main.rs new file mode 100644 index 00000000..d2940930 --- /dev/null +++ b/examples/routes-and-handlers-close-together/src/main.rs @@ -0,0 +1,54 @@ +//! Run with +//! +//! ```not_rust +//! cargo run -p example-routes-and-handlers-close-together +//! ``` + +use axum::{ + routing::{get, post, MethodRouter}, + Router, +}; +use std::net::SocketAddr; + +#[tokio::main] +async fn main() { + let app = Router::new() + .merge(root()) + .merge(get_foo()) + .merge(post_foo()); + + let addr = SocketAddr::from(([127, 0, 0, 1], 3000)); + println!("listening on {}", addr); + axum::Server::bind(&addr) + .serve(app.into_make_service()) + .await + .unwrap(); +} + +fn root() -> Router { + async fn handler() -> &'static str { + "Hello, World!" + } + + route("/", get(handler)) +} + +fn get_foo() -> Router { + async fn handler() -> &'static str { + "Hi from `GET /foo`" + } + + route("/foo", get(handler)) +} + +fn post_foo() -> Router { + async fn handler() -> &'static str { + "Hi from `POST /foo`" + } + + route("/foo", post(handler)) +} + +fn route(path: &str, method_router: MethodRouter) -> Router { + Router::new().route(path, method_router) +}