# Amper ## _Pack of macros for web-programming in Rust_ A simple package with attributes to bind function patterns to the framework `actix-web`. #[GET("/")] fn index() { "nice" } turn into #[get("/")] async fn index() -> impl Responder { "nice" } There are 3 attributes in total #[GET("/"] #[POST("/")] #[SERVER] POST need set to POST request (There is also a special type for handling structs as post requests, which is actix_web::web::Form;) #[derive(Debug)] #[derive(Deserialize)] // (yea, use serde) struct User { username: String, email: String, password: String } #[POST("/")] fn index_analyz(data: Post) { println!("{:#?}", data); "nice" } SERVER set to main of your site #[SERVER] fn main() { HttpServer::new(|| { App::new() .service(index) .service(index_analyz) }) .bind(("127.0.0.1", 8080))? .run() .await } And a little with macros setting HttpResponce for the kind of response body. #[derive(Template)] #[template(path="../static/index.html")] // askama template render engine struct MyPage { content: String } #[GET("/a")] fn foo() { html!("

html text!

") load!("compile-time static load of html file use include_str! macro") template!(MyPage { content: "nice".to_string() }) // expression of struct. implemented for .render() in askama engine } and a one function for parse urls with regex (must run in tokio runtime, what reimported in crate) let prs; { let tokioRuntime = Runtime::new().unwrap(); prs = tokioRuntime.spawn(parsing( "https://your/page/to/parse", "

[^<]+

|

[^<]+

|

[^<]+

|

[^<]+

") ).await.unwrap(); } let prs = prs.unwrap(); println!("{:?}", prs); ## Reimported crates actix-web = "3" regex = "1.5.4" tokio = { version = "1", features = ["rt", "rt-multi-thread"] } actix-files = "0.3"