初めての Cargo プロジェクト

RustBeginner
オンラインで実践に進む

はじめに

Rust プログラムは通常、Rust のプロジェクト管理・ビルドツールである Cargo を使って構成・実行します。この実験では、Linux ターミナルで小さな Cargo プロジェクトを完成させます。ターミナル、エディター、Rust の経験は必要ありません。

プロジェクトフォルダーへの移動、nano を使った Rust ソースファイルの編集、Cargo によるコードチェック、完成したプログラムの実行方法を学びます。この実験では、ソースコードとプログラムの正確な出力の両方を確認します。

プロジェクトに移動してソースを編集する

このステップでは、用意されたプロジェクトを見つけ、nano を使って初めての小さな Rust の編集を行います。

ターミナルは、コマンドを入力するためのテキスト領域です。コマンドは、コンピューターへの指示です。まずターミナル内をクリックしてキーボード入力を受け付ける状態にし、次のコマンドを入力して Enter キーを押します。

pwd

pwd は print working directory の略で、現在の作業ディレクトリを表示します。ディレクトリはフォルダーとも呼ばれます。出力には、現在いるフォルダーが表示されます。通常は /home/labex です。

次に、そのフォルダー内の項目を一覧表示します。

ls

ls は list の略です。project という名前のフォルダーが表示されるはずです。

change directory の略である cd を使い、用意された Rust プロジェクトに移動します。パスは / で始まるため、絶対パスです。絶対パスは、現在のディレクトリではなくファイルシステムの最上位から場所を指定します。

cd /home/labex/project/hello-rust

cd が成功しても、通常ターミナルには何も表示されません。プロジェクトの内容を一覧表示します。

ls

Cargo.toml と src が表示されるはずです。Cargo は Cargo.toml を読み込み、パッケージ名、バージョン、Rust エディション、依存関係を確認します。src ディレクトリには Rust のソースコードが入り、このプログラムは src/main.rs から始まります。

初心者にも使いやすいターミナルテキストエディター nano でソースファイルを開きます。

nano src/main.rs

src/main.rs は 相対パスです。/ で始まらないため、ターミナルは現在のディレクトリ /home/labex/project/hello-rust の中からこのファイルを探します。そのため、先に cd でプロジェクトへ移動しておく必要があります。

ファイルがターミナル内に表示されます。矢印キーでカーソルを移動します。5 つのアンダースコア文字だけを変更し、行を次のようにしてください。

    println!("Hello from LabEx!");

nano の画面下部では、^ 記号が Ctrl キーを表します。Ctrl+O(Ctrl キーを押しながら O キーを押す)でファイルを保存し、Enter キーを押してファイル名を確定します。Ctrl+X で終了します。

同じファイルを再度開き、変更がディスクに保存されたことを確認します。

nano src/main.rs

行に Hello from LabEx! が含まれていることを確認します。再編集する必要はないため、Ctrl+X で終了します。エディターで行った変更が保存されたか不明な場合は、保存したファイルを再度開くと確認できます。

エディターを再び開かずに、保存したファイルを表示します。

cat src/main.rs

cat はファイルの内容をターミナルに表示します。nano と異なり、ファイルを編集する画面は表示されません。Hello from LabEx! が表示され、メッセージ内にアンダースコアがないことを確認します。

メッセージを追加してコードを確認する

このステップでは、小さなプログラムの内容を理解し、1 行追加して、Cargo に間違いがないか確認させます。

ターミナルは引き続き /home/labex/project/hello-rust にあるはずです。不明な場合は、pwd で現在のディレクトリを確認できます。ソースファイルをもう一度開きます。

nano src/main.rs

このプログラムには、Rust の重要な構成要素がいくつかあります。

  • fn main() は main 関数を定義します。プログラムはここから開始します。
  • 開き中括弧 { と閉じ中括弧 } は、関数の命令を囲みます。
  • println! はテキストを 1 行表示します。! は、println! が Rust の マクロであることを示します。
  • 2 つの二重引用符の間にあるテキストは、文字列リテラルです。
  • セミコロン ; は、この命令の終わりを示します。

既存の println! 行の末尾にカーソルを移動し、Enter キーを押します。閉じ中括弧の前に、次の 2 つ目の命令を追加してください。

    println!("I am learning Rust with Cargo.");

ファイル全体は次のようになります。

fn main() {
    println!("Hello from LabEx!");
    println!("I am learning Rust with Cargo.");
}

Ctrl+O で保存し、Enter キーを押して、Ctrl+X で終了します。

次に、パッケージをコンパイルできるか Cargo に確認させます。

cargo check

cargo check はコードを解析し、最終的に実行可能なプログラムを作成せずにエラーを報告します。初回のチェックには少し時間がかかる場合があります。成功すると、最後に Finished を含む行が表示されます。

Cargo がエラーを報告した場合は、ファイルを完全な例と比較してください。特に、引用符、括弧、セミコロン、中括弧を確認します。nano src/main.rs でファイルを修正し、保存してから、もう一度 cargo check を実行します。

Cargo でプログラムを実行する

このステップでは、チェック済みの Rust プログラムをビルドして実行します。

/home/labex/project/hello-rust から次のコマンドを実行します。

cargo run

cargo run は、関連する 2 つの処理を行います。パッケージを実行可能なプログラムにコンパイルし、そのプログラムを起動します。Cargo は、プログラム自身の出力の前に、いくつかのビルド状況の行を表示する場合があります。

末尾付近に、次の 2 行が表示されるはずです。

Hello from LabEx!
I am learning Rust with Cargo.

Cargo の状況メッセージを非表示にして、もう一度プログラムを実行します。

cargo run --quiet

--quiet オプションを指定すると Cargo 自身の出力が少なくなるため、プログラムからの 2 行だけが表示されるはずです。これで、編集、チェック、実行という基本的な Cargo のワークフローを完了しました。

まとめ

Linux ターミナルを操作し、nano で Rust コードを編集・保存し、main 関数と println! マクロを確認し、Cargo パッケージをチェックして実行しました。今回練習した編集・チェック・実行のサイクルは、これから取り組む Rust プロジェクトの基礎になります。