NnmnLog

Rustをインストールしてプロジェクトを作ってみる

作成: 2020-11-15
更新: 2020-11-15
タグ: Rust Programming

環境

以下の環境で動作させることを想定しています。

  • ubuntu 18.04

Rustのインストール

以下のコマンドを実行してインストールします。

$ curl https://sh.rustup.rs -sSf | sh

大まかに、

  • rustup
    • コンパイラーのアップデートや、安定版/ベータ版などリリースチャンネルを切り替えることができるツール
  • rustc
    • Rustのコンパイラー
  • cargo
    • Rustプロジェクトの作成やプロジェクトのビルド、また、パッケージの管理を行うツール

の3つのツールがインストールされます。

コンパイラーがインストールされますが、cargoというツールの方でコンパイラーの仕事もカバーしてくれるので、初めのうちは基本的にcargoを使ってプログラミングを進めていくので問題なさそうです。

Rustのアンインストール

Rustのアンインストールは以下のコマンドでできるようです。

$ rustup self uninstall

プロジェクトを作る

早速、Rustプロジェクトを作成してみたいと思います。 以下のコマンドで、プロジェクトを作成します。 プロジェクトは、バイナリ(アプリケーション)プロジェクトとライブラリプロジェクトのテンプレートから作成できます。 デフォルトでは、バイナリプロジェクトのテンプレートから作成されます。

$ cd ~
$ cargo new hello-rust # ライブラリプロジェクトを作る場合は、--lib オプションを指定する

以下のようなディレクトリ構成でプロジェクトが作成されます。

hello-rust
├── Cargo.toml
└── src
   └── main.rs

デフォルトで以下のHello world!を出力する処理がsrc/main.rsに記載されています。

main.rs

fn main() {
    println!("Hello world!");
}

作成したプロジェクトを実行する

cargo runコマンドでローカルプロジェクトをビルド&実行することができます。

$ cd ~/hello-rust
$ cargo run
   Compiling hello-rust v0.1.0 (/home/mani/hello-rust)
    Finished dev [unoptimized + debuginfo] target(s) in 5.21s
     Running `target/debug/hello-rust`
Hello, world!

ビルドが実行され、target/debug/hello-rustという実行可能ファイルが生成されています。 ビルド後にtarget/debug/hello-rustが自動で実行されているのがわかります。

作成したプロジェクトをインストールする

cargo installコマンドで作成したプロジェクトをインストールします。 --pathオプションで、インストールする対象のプロジェクトを指定します。

$ cd ~/hello-rust
$ cargo install --path .
  Installing hello-rust v0.1.0 (/home/mani/hello-rust)
   Compiling hello-rust v0.1.0 (/home/mani/hello-rust)
    Finished release [optimized] target(s) in 0.11s
  Installing /home/mani/.cargo/bin/hello-rust
   Installed package `hello-rust v0.1.0 (/home/mani/hello-rust)` (executable `hello-rust`)
$ hello-rust
Hello, world!
$ which hello-rust
/home/mani/.cargo/bin/hello-rust

ビルドが実行され、target/release以下にリリース用のバイナリファイルを作成し、~/.cargo/bin/にファイルにバイナリがインストールされます。

インストール先の指定

以下の優先順で、プロジェクトのインストール先を指定することができます。

  1. cargo installコマンドの--rootオプションで指定
  2. 環境変数CARGO_INSTALL_ROOTで指定
  3. プロジェクトの設定ファイルCargo.tomlで指定
    # In Cargo.toml
    [install]
    root = "/path/to/target/directory"
    
  1. 環境変数CARGO_HOMEで指定
  2. $HOME/.cargo

今回は、1〜4を指定していないので、5番目の$HOME/.cargoが指定されたようです。

試しに1のcargo installでインストール先にホームディレクトリを指定して実行してみます。

$ cd ~/hello-rust
$ cargo install --path . --root ~
  Installing hello-rust v0.1.0 (/home/mani/hello-rust)
    Finished release [optimized] target(s) in 0.01s
  Installing /home/mani/bin/hello-rust
   Installed package `hello-rust v0.1.0 (/home/mani/hello-rust)` (executable `hello-rust`)
$ which hello-rust
/home/mani/bin/hello-rust

ホームディレクトリ以下にbinディレクトリが掘られ、そこにバイナリがインストールされるようです。

作成したプロジェクトのアンインストール

cargo uninstallコマンドで自作のプロジェクトのアンインストールも行えます。

$ cargo uninstall hello-rust
    Removing /home/mani/.cargo/bin/hello-rust
$ cargo uninstall --root ~ hello-rust         # インストール時にインストール先を指定していた場合は、--rootオプションでバイナリがインストールされているディレクトリを指定する
    Removing /home/mani/bin/hello-rust

まとめ

Rustのインストールと、プロジェクトの作成やインストール方法を試してみました。

cargoコマンドで簡単にプロジェクトの作成からインストール・アンインストールまでを一通りできることがわかりました。

自作したコマンドラインツールなどのインストールする場合などcargoだけで完結しそうなのでとても使いやすそうです。