【Rust】サーバのcrateを利用する

### actix-web
$ cargo new my_web_app
$ cd my_web_app

[dependencies]
actix-web = "4"

main.rs

use actix_web::{web, App, HttpResponse, HttpServer, Responder};

async fn greet() -> impl Responder {
    HttpResponse::Ok().body("Hello, world!")
}

#[actix_web::main]
async fn main() -> std::io::Result<()> {
    HttpServer::new(||{
        App::new()
            .route("/", web::get().to(greet))
    })
    .bind("127.0.0.1:8080")?
    .run()
    .await
}

$ curl 127.0.0.1:8080
Hello, world!

ほう

### Rocket
$ cargo new rocket_web_app
$ cd rocket_web_app
$ rustup override set nightly

#[macro_use] extern crate rocket;

#[get("/")]
fn index() -> &'static str {
    "Hello, world!"
}

#[launch]
fn rocket() -> _ {
    rocket::build().mount("/", routes![index])
}

$ cargo run
Compiling rocket_web_app v0.1.0 (/home/vagrant/dev/rust/rocket_web_app)
error[E0463]: can’t find crate for `rocket`
–> src/main.rs:1:14
|
1 | #[macro_use] extern crate rocket;
| ^^^^^^^^^^^^^^^^^^^^ can’t find crate
….

rocketの方は色々エラーが出るので、少し触った感じではactix-webの方が使いやすそう..