Mac に Rust 環境を作る

Mac に Rust 環境を作る

August 28, 2022

インストールからプログラムの実行まで、さくっと試してみましょう。

インストール #

インストールに関する公式ドキュメントは以下です。公式は rustup というツールを直接ダウンロードする方法を第一に推奨しているようです。

ただし、他のインストール方法についても次のページにまとめられています。

こちらのページでは Homebrew でのインストールも紹介されています。私は可能な限り Homebrew に紐づけて管理したいと思っているため、Homebrew 経由で導入することにします。

*注意:rust ではなく rustup-init をインストールしてください。

brew install rustup-init

インストールが終わったら以下のコマンドを実行します。

rustup-init

すると次のメッセージが表示されます。

Welcome to Rust!

This will download and install the official compiler for the Rust
programming language, and its package manager, Cargo.

Rustup metadata and toolchains will be installed into the Rustup
home directory, located at:

  /Users/[your-user-name]/.rustup

This can be modified with the RUSTUP_HOME environment variable.

The Cargo home directory is located at:

  /Users/[your-user-name]/.cargo

This can be modified with the CARGO_HOME environment variable.

The cargo, rustc, rustup and other commands will be added to
Cargo's bin directory, located at:

  /Users/[your-user-name]/.cargo/bin

This path will then be added to your PATH environment variable by
modifying the profile files located at:

  /Users/[your-user-name]/.profile
  /Users/[your-user-name]/.zshenv

You can uninstall at any time with rustup self uninstall and
these changes will be reverted.

Current installation options:


   default host triple: x86_64-apple-darwin
     default toolchain: stable (default)
               profile: default
  modify PATH variable: yes

1) Proceed with installation (default)
2) Customize installation
3) Cancel installation
>

インストール方法を選択するように求められています。デフォルトの 1 で回答します。

その後 Rust is installed now. Great! が表示されていれば完了です。

ターミナルを開き直して、下記のコマンドを実行します。無事にインストールできていれば結果が返ってきます。

rustup --version
rustc --version
cargo --version

プロジェクト作成そして Hello, World! #

以下を実行します。

cargo new hello_rustaceans

cd hello_rustaceans

cargo run

コンソールに Hello, world! が表示されるはずです。

プロジェクトフォルダを開いてみると、次のコードが確認できます。

src/main.rs

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

FizzBazz プログラム #

今度は src/main.rs を次のように書き換えて FizzBazz プログラムを実行してみます。

fn main() {
    for i in 1..100 {
        if i % (3 * 5) == 0 {
            println!("Number is {i} FizzBazz");
        } else if i % 3 == 0 {
            println!("Number is {i} Fizz");
        } else if i % 5 == 0 {
            println!("Number is {i} Bazz");
        } else {
            println!("Number is {i}");
        }
    }
}

ターミナルで cargo run を実行します。

Number is 1
Number is 2
Number is 3 Fizz
Number is 4
Number is 5 Bazz
Number is 6 Fizz
Number is 7
Number is 8
Number is 9 Fizz
Number is 10 Bazz
Number is 11
Number is 12 Fizz
Number is 13
Number is 14
Number is 15 FizzBazz
......
...

ライブラリを使用したプログラム #

次のライブラリを使用してみます。

Cargo.toml に以下を追加します。

[package]
name = "hello_rustaceans"
version = "0.1.0"
edition = "2021"

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

[dependencies]
ferris-says = "0.2" # 追加

そして src/main.rs を次のように編集します。

extern crate ferris_says;

use ferris_says::say;
use std::io::{ stdout, BufWriter };

fn main() {
    let out = b"Hello fellow Rustaceans!";
    let width = 24;

    let mut writer = BufWriter::new(stdout());
    say(out, width, &mut writer).unwrap();
}

それからターミナルで cargo run を実行します。

 __________________________
< Hello fellow Rustaceans! >
 --------------------------
        \
         \
            _~^~^~_
        \) /  o o  \ (/
          '_   -   _'
          / '-----' \

Ferris ちゃんです。Rust の(非公式)キャラクターです。

その他ツールのインストール #

ここまででプログラムの実行環境は整備されました。

あとは必要に応じて便利ツールを導入していきます。

なお、各ツールの説明は次の記事が詳しいです。あわせてご参照ください。

rustup component の追加 #

フォーマッタを追加します。rustfmt です。

rustup component add rustfmt

リンタを追加します。Clippy です。

rustup component add clippy

確認として、次のコマンドを実行すると現在インストールされている component が表示されます。

rustup component list

crates の追加 #

ここはお好みで取捨選択して良いですが、とりあえずすべて入れてしまって良いと思います。

パッケージをインストールする方法を簡略化します。cargo-edit です。

これを使うと、node.js でいう npm install something のようにパッケージを追加できるようになります。

cargo install cargo-edit

ソースコードの変更を検知して特定のコマンドを実行できるようにします。cargo-watch です。

コードを修正したら自動でビルド、コードを修正したら自動でテスト、といったことができるようになります。

cargo install cargo-watch

確認として、次のコマンドを実行すると現在インストールされている crates が表示されます。

cargo install --list

VS Code 拡張機能・設定 #

エディタとして VS Code を使う場合はこちらの拡張機能を入れると良いでしょう。

コード補完やジャンプ、未使用の変数の検知など、もろもろのインテリセンスが有効になります。rust-analyzer です。

デバッグができるようになります。CodeLLDB です。

TOML ファイルのシンタックスハイライトを有効にします。 Better TOML です。

その後、お好みで settings.json を編集します。

{
  // rust-analyzer が表示する型情報を非表示にする
  // ただし control + option (Mac) を押しているときのみ表示する
  "editor.inlayHints.enabled": "offUnlessPressed",

  // rust-analyzer のリンタとして(デフォルトの check ではなく) clippy を使用する
  "rust-analyzer.checkOnSave.command": "clippy",

  // コード保存時に自動整形する
  "[rust]": {
    "editor.defaultFormatter": "rust-lang.rust-analyzer"
  }
}

おわり #

これで環境整備は完了です。あとは Rust をどっぷり勉強しましょう。