Rust

提供: ArchWiki
2017年3月8日 (水) 22:34時点におけるKusakata (トーク | 投稿記録)による版 (→‎Visual Studio Code: 同期)
ナビゲーションに移動 検索に移動

Rust は驚異的に高速で、セグメンテーション違反を滅多に起こさず、スレッドとメモリの安全性が保証された、システムプログラミング言語です。

ライブラリ

Rust コアライブラリ

Rust Core Library は何にも依存しない Rust 標準ライブラリの基礎となるライブラリです。LLVM と直接通じることで、ハードウェアに囚われないプラットフォームとして Rust を使うことができます。LLVM との緊密な統合により、Clang でコンパイルされた C アプリケーションよりも高い性能を発揮することができ、libcore で設計された Rust ソフトウェアは C よりも低レイヤーを扱うことができます。組み込み環境向けのソフトウェアを開発している場合、#[nostd] で標準ライブラリを省くことでコアライブラリだけを使うことができ、バイナリサイズを小さく、高い性能を発揮させることが可能です。ただし、#[nostd] を使用すると Rust コミュニティから取得することができる膨大なソフトウェアに制限がかかるため、大抵のライブラリは標準ライブラリを必要としています。

Rust 標準ライブラリ

Rust Standard Library は移植性の高い Rust ソフトウェアによって構成された便利な高水準の抽象ライブラリです。Vec, Iterator, Option, Result, String 型や、基本的なメソッド、大量の標準マクロ、I/O やマルチスレッドのサポート、Box によるヒープメモリ確保などの便利な機能、その他、コアライブラリに存在しない高度な機能が多数存在します。

リリースサイクル

Rust は Firefox のリリースサイクルと同じように6週間ごとに定期的にリリースされます。新しいリリースが出るたびに、コアライブラリや標準ライブラリは改善され、対応プラットフォームが新しく増えたりパフォーマンスが向上したり、あるいは新しい機能の安定化が行われます。

インストール

ネイティブのインストール方法

Rust の最新安定版をインストールするには、rust パッケージをインストールしてください。このパッケージは rustc コンパイラだけをインストールするため、cargo パッケージは別にインストールする必要があります。

Rustup による公式のインストール方法

Rust でソフトウェアを開発するときに、公式に推奨されている Rust のインストール方法は Rustup ツールチェインマネージャ を使用する方法です (Rustup は Rust で書かれています)。

ソフトウェアリポジトリに存在するスタンドアロンな Rust を使用しないで、Rustup ツールチェインマネージャを使用する利点として、複数のプラットフォーム (Windows, Mac, Android) やアーキテクチャ (x86, x86_64, arm) 用に複数のツールチェイン (stable, beta, nightly) をインストールすることができる点が挙げられます。また、Clippy などのツールはコンパイラプラグインのサポートを必要としており、Rust のナイトリービルドでしか使えないことも特記すべきことでしょう。

Rustup をインストールする方法は2つ存在します:

  • curl -f https://sh.rustup.rs > rust.sh でファイルをダウンロードして ./rust.sh でスクリプトを実行してください。rustup をアップデートしたい場合は rustup self update を実行するだけです。
  • rustup公式リポジトリからインストールすることもできます。公式リポジトリからインストールした場合 rustup self update は使用できないので注意してください。pacman で直接パッケージをアップデートする必要があります。

デフォルトでは、あなたが現在使用しているアーキテクチャの stable チャンネルだけがインストールされます。使用するには、インストールされた stable チャンネルがデフォルトで使用されるように指定する必要があります:

ノート: rustup コマンドを実行する前に PATH に $HOME/.cargo/bin を追加してください。
$ rustup default stable

それから rustc -V を使って rust のバージョンを確認してください:

$ rustc -V 
rustc 1.9.0 (e4e8b6668 2016-05-18)

nightly をインストール・使用したい場合、以下のコマンドを実行:

$ rustup install nightly
$ rustup default nightly

バージョンを確認:

$ rustc -V 
rustc 1.11.0-nightly (01411937f 2016-07-01)

インストールのテスト

以下のようなシンプルなプログラムをビルドして、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)。

  1. mingw-w64-gccwineインストール
  2. Windows の実行可能ファイルの binfmt の定義を手動で追加するか binfmt-wineAUR をインストール。
  3. rustup を使っている場合、rustup install stable-$ARCH-pc-windows-gnurustup 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 する方法です。
  4. 最後に、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 のパッケージマネージャである Cargocargoインストールできます。ナイトリー版は AUR の cargo-nightly-binAUR でインストールできます。rustup を使用している場合、Cargo は既にインストールされています。

Cargo は Rust プロジェクトの依存関係を宣言することができるようにするツールであり、それによってビルドがいつでも通ることが保証されます。

使用方法

Cargo を使って新しいプロジェクトを作成するには:

$ cargo new hello_world --bin
ノート: Cargo がプロジェクトをコンパイルするのに必要なメタデータを全て含めたマニフェストファイルである Cargo.toml ファイルを Cargo は使用します:
Cargo.toml
[package]
name = "hello_world"
version = "0.1.0"
authors = ["Your Name <you@example.com>"]

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 は Tokamak IDE プラグインで Rust 言語をサポートします。

Visual Studio Code

VSCode の Rust のサポートは Rust 拡張をインストールすることで得られます。

Vim

Vim による Rust のサポートは vim-racer プラグインで得ることができます。

参照