はじめに
Rust (あるいは rustlang) はモダンな汎用プログラミング言語の一つです。高速で、安全で、開発生産性を備えています。
Rust にはたくさんの特徴があります。例えば 関数型プログラミング (英語) パラダイムや、所有権 (英語)、ゼロコスト抽象化 (英語) (!) などです。速度と安全性について言うと、GC すなわちガベージ・コレクションがありません。そのため非常に少ないメモリで動作し、ゴミを残しません。生産性について言うと、cargo というよくできたパッケージ・マネージャーがあり、さらに rustup というツールチェイン (英語) (stable / beta / nightly と複数に分かれたリリースチャネル) に対応したインストーラーがあります。
Rust はクロス・プラットフォームに対応しています。単一のコードベースから、さまざまなプラットフォームで動作するようにコンパイルできます。さらに出力が単体のバイナリになるので、ファイルサイズは最適化されておりそれゆえ小さいです。ここにおいて Rust のさらなる特徴が挙げることができます。すなわちポータビリティです。 サポートされているプラットフォームですが、まず Windows / Mac / Linux です。(Tier 1) そしてそれだけにとどまらず FreeBSD (Tier 2) や OpenBSD (Tier 3) も含まれます。
Tier とは何でしょうか ? Rust の プラットフォームのサポートモデル (英語) に関わるものです。3 つの層から成ります。
Tier | 説明 |
---|---|
1 | “動作の保証” (公式バイナリのビルドプロセスで、テストまで自動化されています) |
2 | “ビルドの保証” (ビルドの自動化と、テストの一部自動化) |
3 | 正常動作しない可能性あり (コードベースとしてはサポートされていますが、ビルドとテストの自動化はされていません) |
64 ビット Linux (kernel 3.2+, glibc 2.17+) は、Tier 1 です。最も厚くサポートされているカテゴリです !!
本記事では Rust を Artix Linux という Arch Linux 由来の OS にインストールする方法を紹介します。
環境
- OS: Artix Linux (Arch Linux 由来)
- App: Rust 1.66.0
- App toolchains installer: rustup 1.25.1
- ターミナル: Xfce4 Terminal
- IDE (& エディター): VSCodium (あるいは VS Code)
チュートリアル
各所の doas
は sudo
に置き換えることができます。
インストール
pacman を使用する場合でも、少なくとも 2 つの選択肢があります。
- Rust の直接インストール
- rustup をインストールして stable チャネルの環境を構築する方法
後者の方法が公式に推奨されています。とは言え必ずしもというわけではありません。お試しで前者の方法を採って時短することも可能です。
いずれの方法についても以下に示します。ターミナルを開いて始めましょう。
Rust の直接インストール (選択肢 1)
$ doas pacman -Sy rust
rustup のインストール (選択肢 2)
$ doas pacman -Sy rustup
続いて以下を実行します。
$ rustup default stable
出力は以下の通りでした:
info: syncing channel updates for 'stable-x86_64-unknown-linux-gnu'
info: latest update on 2022-12-15, rust version 1.66.0 (69f9c33d7 2022-12-12)
info: downloading component 'cargo'
info: downloading component 'clippy'
info: downloading component 'rust-docs'
info: downloading component 'rust-std'
info: downloading component 'rustc'
68.0 MiB / 68.0 MiB (100 %) 22.9 MiB/s in 2s ETA: 0s
info: downloading component 'rustfmt'
info: installing component 'cargo'
info: installing component 'clippy'
info: installing component 'rust-docs'
19.0 MiB / 19.0 MiB (100 %) 15.3 MiB/s in 1s ETA: 0s
info: installing component 'rust-std'
29.7 MiB / 29.7 MiB (100 %) 17.4 MiB/s in 1s ETA: 0s
info: installing component 'rustc'
68.0 MiB / 68.0 MiB (100 %) 19.7 MiB/s in 3s ETA: 0s
info: installing component 'rustfmt'
info: default toolchain set to 'stable-x86_64-unknown-linux-gnu'
stable-x86_64-unknown-linux-gnu installed - rustc 1.66.0 (69f9c33d7 2022-12-12)
完了です 😉
余談ですが rustup を使うと、stable の代わりに、nightly もしくは beta 版の環境を入れることもできます。それらの方が、コンパイルタイムが短縮されていたり、充実した (しかしながらおそらくはテスト中の) 機能を使える場合があります。
プロジェクトの作成
最初にディレクトリをつくります。
$ mkdir my-first-rust-prj
$ cd my-first-rust-prj
次に VSCodium を (あるいは VS Code を) そのディレクトリで立ち上げます。
キーボードの Ctrl + Shift + @
を押して、ターミナルを開きましょう。
cargo init
を実行します。すると cargo のパッケージが生成されます:
$ cargo init --bin .
なお --bin
オプションはデフォルトの挙動に該当するので、省略しても大丈夫です。
出力は以下の通りでした:
Created binary (application) package
次のようなものたちができているはずです。Cargo.toml
、これはプロジェクトのマニフェスト定義、Cargo.lock
、こちらは依存パッケージのロックファイル、それから src/main.rs
というプログラムのエントリになるもの、などなど。さらに cargo build
を実行すると、target
というディレクトリが生成されます。
.
├─.gitignore
├─src
├───main.rs
├─Cargo.lock
└─Cargo.toml
デモアプリの実行
コンパイルできるセットが手に入りました。
実際にコンパイルしてアプリとして実行するには、どうすれば良いのでしょうか ? こちらを実行するだけです:
$ cargo run
出力は以下の通りでした:
Compiling my-first-rust-prj v0.1.0 (/(...)/my-first-rust-prj)
Finished dev [unoptimized + debuginfo] target(s) in 0.26s
Running `target/debug/my-first-rust-prj`
Hello, world!
やりました。“Hello, world!” と出力されました。すばらしいですね :)
別のやり方として、バイナリを生成して、それを手動で実行することもできます。
$ cargo build
Finished dev [unoptimized + debuginfo] target(s) in 0.00s
$ ./target/debug/my-first-rust-prj
Hello, world!
おわりに
さあ Rust プロジェクトのこと始めができました。すぐにでも開発を始められます。 データ加工、ファイル I/O の実装、ネットワーク接続の制御、サーバー構築、などなど。
Rust との旅をお楽しみください ―― 安全で、強力で、おもしろくて、堅牢で、魅力的なものになるでしょう。 良い旅を ;)
参考
- The Rust Programming Language (英語)
- 本当に良い本です !!
- Learn Rust (英語)