「Rust」cargo watchで変更を自動検知しホットリロード

スポンサーリンク

今回はRustで開発する際に便利なツールcargo watchを紹介したいと思います。

cargo-watch GitHubリポジトリ

インストール

cargo install cargo-watch

watch

cargo watch -x run

実際に試す

簡単なWebアプリのサンプルコードで試してみました

main.rs

use actix_web::{get, App, HttpResponse, HttpServer, ResponseError};
use thiserror::Error;

#[derive(Debug, Error)]
enum MyError {}

impl ResponseError for MyError {}

#[get("/")]
async fn index() -> Result<HttpResponse, MyError> {
    let response_body = "Hello";

    Ok(HttpResponse::Ok().body(response_body))
}
#[actix_web::main]
async fn main() -> Result<(), actix_web::Error> {
    HttpServer::new(move || App::new().service(index))
        .bind("0.0.0.0:8484")?
        .run()
        .await?;
    Ok(())
}

let response_body = "Hello";let response_body = "Hello World!";に書き換えセーブすると[Running 'cargo run']が出力され更新されます。更新後ブラウザをリロードすると変更された内容が出力されます。