Rust
Rust は驚異的に高速で、セグメンテーション違反を滅多に起こさず、スレッドとメモリの安全性が保証された、システムプログラミング言語です。
ライブラリ
Rust コアライブラリ
Rust Core Library は何にも依存しない Rust 標準ライブラリの基礎となるライブラリです。LLVM と直接通じることで、ハードウェアに囚われないプラットフォームとして Rust を使うことができます。LLVM との緊密な統合により、Clang でコンパイルされた C アプリケーションよりも高い性能を発揮することができ、libcore で設計された Rust ソフトウェアは C よりも低レイヤーを扱うことができます。組み込み環境向けのソフトウェアを開発している場合、#![no_std]
で標準ライブラリを省くことでコアライブラリだけを使うことができ、バイナリサイズを小さく、高い性能を発揮させることが可能です。ただし、#![no_std]
を使用すると Rust コミュニティから取得することができる膨大なソフトウェアに制限がかかるため、大抵のライブラリは標準ライブラリを必要としています。
Rust 標準ライブラリ
Rust Standard Library は移植性の高い Rust ソフトウェアによって構成された便利な高水準の抽象ライブラリです。Vec
, Iterator
, Option
, Result
, String
型や、基本的なメソッド、大量の標準マクロ、I/O やマルチスレッドのサポート、Box
によるヒープメモリ確保などの便利な機能、その他、コアライブラリに存在しない高度な機能が多数存在します。
リリースサイクル
Rust は Firefox のリリースサイクルと同じように6週間ごとに定期的にリリースされます。新しいリリースが出るたびに、コアライブラリや標準ライブラリは改善され、対応プラットフォームが新しく増えたりパフォーマンスが向上したり、あるいは新しい機能の安定化が行われます。
インストール
ネイティブのインストール方法
Rust の最新安定版をインストールするには、rust パッケージをインストールしてください。rustc
コンパイラと Cargo がインストールされます。
Rust コンパイラの開発版は AUR からインストールできます。ビルド済みの汎用バイナリは rust-nightly-binAUR を、システムライブラリが付属するコンパイラのビルドは rust-gitAUR を使ってください。非公式リポジトリを使うことで定期的に更新されるビルド済みの rust-git パッケージを入手することもできます。
Rustup によるインストール方法
Rust でソフトウェアを開発するときに、公式に推奨されている Rust のインストール方法は Rustup ツールチェインマネージャ を使用する方法です (Rustup は Rust で書かれています)。
ソフトウェアリポジトリに存在するスタンドアロンな Rust を使用しないで、Rustup ツールチェインマネージャを使用する利点として、複数のプラットフォーム (Windows, Mac, Android) やアーキテクチャ (x86, x86_64, arm) 用に複数のツールチェイン (stable, beta, nightly) をインストールすることができる点が挙げられます。
上流のインストールスクリプト
curl -f https://sh.rustup.rs > rust.sh
としてファイルをダウンロードします。そのあと、less ./rust.sh
でファイルの内容を確認した上で、./rust.sh
でスクリプトを実行してください。スクリプトはログインシェルの設定ファイルの PATH のみ変更します。一度ログアウトしてからログインしなおすか source $HOME/.cargo/env
を実行する必要があります。rustup をアップデート rustup self update
を実行するだけです。
Arch Linux パッケージ
rustup は公式リポジトリからインストールすることもできます。公式リポジトリからインストールした場合 rustup self update
は使用できないので注意してください。pacman で直接パッケージをアップデートする必要があります。
この方法だと、Rust のバイナリが ~/.cargo/bin
ではなく /usr/bin
にあり、PATH
に別のディレクトリを加えなくてよい利点があります。
ツールチェインをインストールするには、stable
か nightly
のどちらのバージョンを使用するか rustup に指定する必要があります:
$ rustup default stable
使い方
stable
、beta
、nightly
や 1.23.0
などのツールチェインを手動でインストールする必要があったり、また、他のツールチェインを使用したりテストするときには次のコマンドを入力します:
$ rustup toolchain install toolchain
すると、Rust コマンドを rustup run toolchain command
として実行できます。これらのコマンドを直接実行するには、ツールチェインをアクティベートする必要があります:
$ rustup default toolchain
rustc -V
を使って rust のバージョンを確認してください:
$ rustc -V
rustc 1.26.0 (a77568041 2018-05-07)
インストールのテスト
以下のようなシンプルなプログラムをビルドして、Rust が正しくインストールされていることを確認してください:
~/hello.rs
fn main() { println!("Hello, World!"); }
rustc
でコンパイルして実行することができます:
$ rustc hello.rs && ./hello
Hello, World!
クロスコンパイル
rustup を使う
rustup を使うことで簡単にクロスコンパイルができます。rustup は多数のクロスコンパイルターゲットに対応しています。対応しているプラットフォームの完全なリストは rustup target list
を実行することで確認できます。
例えば、gnu コンパイラを使って Windows 用にコンパイルする stable チャンネルの rust をインストールしたい場合、以下を実行:
$ rustup install stable-x86_64-pc-windows-gnu
上記のコマンドでは、コンパイル先のアーキテクチャ用の rust とツールしかインストールされません。場合によってはクロスコンパイルするのに追加でツールが必要になる可能性があります。
Windows
このセクションでは、$ARCH
がターゲットのアーキテクチャです (x86_64
または i686
)。
- mingw64-w64-gcc-baseAUR と mingw-w64-gcc と wine をインストール。
- rustup を使っている場合、
rustup install stable-$ARCH-pc-windows-gnu
とrustup target add $ARCH-pc-windows-gnu
を実行することで rust と標準ライブラリをインストールできます。rustup を使っていない場合、rustlib ディレクトリ (rust-nightly-binAUR を使用する場合は/usr/local/lib/rustlib
、公式の rust パッケージを使用する場合は/usr/lib/rustlib
) に Windows 用の Rust の標準ライブラリのコピーをインストールします。一番簡単な方法は、ターゲットとするアーキテクチャの Windows 用の Rust インストーラーをダウンロードして、Wine を使ってインストール (wine start my-rust-installer.msi
) してから rustlib ディレクトリにコピー$INSTALL_DIR/bin/rustlib/$ARCH-pc-windows-gnu
する方法です。 - 最後に、cargo の設定ファイルに以下を追加して MinGW-w64 の gcc/ar のパスを cargo に指定します:
~/.cargo/config
[target.$ARCH-pc-windows-gnu] linker = "/usr/bin/$ARCH-w64-mingw32-gcc" ar = "/usr/$ARCH-w64-mingw32/bin/ar"
cargo に --target $ARCH-pc-windows-gnu
と指定することで Windows 向けのクロスコンパイルができます:
$ # Build $ cargo build --release --target "$ARCH-pc-windows-gnu" $ # Run unit tests under wine $ cargo test --target "$ARCH-pc-windows-gnu"
非公式パッケージ
非公式の archlinuxcn リポジトリには i686, ARM, ARMv7, Windows 32, Windows 64 向けの rust-nightly と Rust 標準ライブラリが含まれています。パッケージをインストールすればクロスコンパイルができます。ただし、ARM のツールチェインは自分で用意する必要があります。32ビット版の Windows を対象にビルドする場合、実行するのに libgcc_s_dw2-1.dll
が必要になります。
Cargo
Rust のパッケージマネージャである Cargo は rust パッケージに付属しています。ナイトリー版は AUR の cargo-nightly-binAUR でインストールできます。rustup を使用している場合、Cargo は既にインストールされています。
Cargo は Rust プロジェクトの依存関係を宣言することができるようにするツールであり、それによってビルドがいつでも通ることが保証されます。
使用方法
Cargo を使って新しいプロジェクトを作成するには:
$ cargo new hello_world --bin
sccache
sccache を使うと中間生成物をキャッシュすることで、前回のコンパイル時から変化しない部分の再コンパイル時間を省きます。sccache パッケージでインストールできます。
Cargo で利用するには以下の方法があります。
RUSTC_WRAPPER
環境変数を設定することで一時的に sccache を利用できます:
RUSTC_WRAPPER=sccache cargo build
常に利用するようにするには、~/.cargo/config
に以下の設定を加えます:
~/.cargo/config
[build] rustc-wrapper = "sccache"
IDE のサポート
ツール
Racer
Racer 自動補完エンジンは Rust の自動補完が必要な際に現在最も優れている選択肢です。ただし、Racer を使うには Rust のソースコードのコピーをインストールする必要があります。入手する方法は複数存在します:
- rustup を使う:
rustup component add rust-src
。 - AUR を使う: rust-srcAUR または rust-nightly-srcAUR。AUR を使用する場合は
RUST_SRC_PATH
環境変数を設定してください。
ソースコードをインストールしたら、rust-racer パッケージをインストールするか、Cargo を使って Racer をインストールすることができます:
$ cargo install racer
Clippy
Clippy は Rust のナイトリービルドに存在するコンパイラプラグイン機能を利用して、様々なエラーや慣習的な警告を検出する文法チェックを行います。安定版の Rust コンパイラでコンパイルするときに clippy を使うことはできません。Clippy は cargo でインストールできます:
$ cargo install clippy
エディタ
Atom
Atom はプラグインで Rust 言語をサポートします: language-rust と linter-rust。
IntelliJ IDEA
IntelliJ IDEA には Rust プラグイン が存在します。CLion でも同じプラグインが使えます。ツールチェインを設定するときは rustup を使ってソースをダウンロード (rustup component add rust-src
) して、ツールチェインのディレクトリとして ~/.rustup/toolchains/<your toolchain>/bin
を選択してください。
Visual Studio Code
VSCode の Rust のサポートは Rust 拡張をインストールすることで得られます。
Vim
Vim による Rust のサポートは公式の rust.vim プラグインで得ることができます。
Emacs
Emacs の Rust サポートは公式の rust-mode プラグインか emacs-rust-modeAUR パッケージで有効にできます。