[Rust]Rocket を使ってみる

RustWeb アプリケーションフレームワークである Rocket を使ってみました。

今回は Rocket を使ってブラウザで「 Hello, world! 」を表示するところまでを説明していきたいと思います。

前提条件

rustup : 1.24.3
Rust : 1.61.0-nightly
Rocket : 0.4.10

Rocket を使用するには事前に rustup というインストーラをダウンロードする必要があります。 Rust の環境構築については下記の記事を参考にしてください。

Rust nightly のインストール

Rocket では Rustnightly というバージョンを使用します。
下記のコマンドを実行して Rust nightly をデフォルトのツールチェーンとして設定します。

$ rustup default nightly

nightly-x86_64-apple-darwin installed - rustc 1.61.0-nightly (3c17c84a3 2022-03-21)

以下のようにバージョンが確認できたらインストール成功です。

$ rustc --version
rustc 1.61.0-nightly (3c17c84a3 2022-03-21)

プロジェクトを新規作成する

以下のコマンドでプロジェクトを新規作成します。

$ cargo new hello-rocket --bin
     Created binary (application) `hello-rocket` package

作成したプロジェクトのディレクトリに移動します。

$ cd hello-rocket

Cargo.toml を編集する

Cargo.toml というファイルを以下のように編集します。

$ vim Cargo.toml
[package]
name = "hello-rocket"
version = "0.1.0"
edition = "2021"

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

[dependencies]
rocket = "0.4.10"

ここでは dependencies に使用するRocketのバージョンを追記しています。

main.rs を編集する

src/main.rs を編集します。

$ vim src/main.rs
#![feature(proc_macro_hygiene, decl_macro)]

#[macro_use] extern crate rocket;

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

fn main() {
    rocket::ignite().mount("/", routes![index]).launch();
}

http://localhost:8000 へアクセスしたときに「 Hello, world! 」が表示されるように編集しています。

動作確認

下記コマンドで動作確認を行います。

$ cargo run
🔧 Configured for development.
    => address: localhost
    => port: 8000
    => log: normal
    => workers: 16
    => secret key: generated
    => limits: forms = 32KiB
    => keep-alive: 5s
    => read timeout: 5s
    => write timeout: 5s
    => tls: disabled
🛰  Mounting /:
    => GET / (index)
🚀 Rocket has launched from http://localhost:8000

http://localhost:8000 へアクセスしてみます。

Rust Rocket 1

無事、 Hello, world! が表示されました!!

最後に

結構簡単に Hello, world! を表示させることができましたが、画面のデザインのテンプレートの適用方法やルーティング、 ORM の使い方などまだまだ Web アプリケーションとして動かすにはやることがいっぱいですね。
実装方法を色々調べてまた説明していきたいと思います。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です