「Rust」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(4人の利用者による、間の14版が非表示)
8行目: 8行目:
 
=== Rust コアライブラリ ===
 
=== Rust コアライブラリ ===
   
[https://doc.rust-lang.org/core/ Rust Core Library] は何にも依存しない Rust 標準ライブラリの基礎となるライブラリです。LLVM と直接通じることで、ハードウェアに囚われないプラットフォームとして Rust を使うことができます。LLVM との緊密な統合により、Clang でコンパイルされた C アプリケーションよりも高い性能を発揮することができ、libcore で設計された Rust ソフトウェアは C よりも低レイヤーを扱うことができます。組み込み環境向けのソフトウェアを開発している場合、{{ic|#[nostd]}} で標準ライブラリを省くことでコアライブラリだけを使うことができ、バイナリサイズを小さく、高い性能を発揮させることが可能です。ただし、{{ic|#[nostd]}} を使用すると Rust コミュニティから取得することができる膨大なソフトウェアに制限がかかるため、大抵のライブラリは標準ライブラリを必要としています。
+
[https://doc.rust-lang.org/core/ Rust Core Library] は何にも依存しない Rust 標準ライブラリの基礎となるライブラリです。LLVM と直接通じることで、ハードウェアに囚われないプラットフォームとして Rust を使うことができます。LLVM との緊密な統合により、Clang でコンパイルされた C アプリケーションよりも高い性能を発揮することができ、libcore で設計された Rust ソフトウェアは C よりも低レイヤーを扱うことができます。組み込み環境向けのソフトウェアを開発している場合、{{ic|#![no_std]}} で標準ライブラリを省くことでコアライブラリだけを使うことができ、バイナリサイズを小さく、高い性能を発揮させることが可能です。ただし、{{ic|#![no_std]}} を使用すると Rust コミュニティから取得することができる膨大なソフトウェアに制限がかかるため、大抵のライブラリは標準ライブラリを必要としています。
   
 
=== Rust 標準ライブラリ ===
 
=== Rust 標準ライブラリ ===
22行目: 22行目:
 
=== ネイティブのインストール方法 ===
 
=== ネイティブのインストール方法 ===
   
Rust の最新安定版を[[インストール]]するには、{{Pkg|rust}} パッケージを[[インストール]]してください。このパッケージは rustc コンパイラだけをインストールするため、{{Pkg|cargo}} パッケージは別にインストールする必要があります。
+
Rust の最新安定版を[[インストール]]するには、{{Pkg|rust}} パッケージを[[インストール]]してください。{{ic|rustc}} コンパイラと [[Cargo]] インストールされます。
   
  +
Rust コンパイラの開発版は [[AUR]] からインストールできます。ビルド済みの汎用バイナリは {{AUR|rust-nightly-bin}} を、システムライブラリが付属するコンパイラのビルドは {{AUR|rust-git}} を使ってください。[[非公式ユーザーリポジトリ#rust-git|非公式リポジトリ]]を使うことで定期的に更新されるビルド済みの rust-git パッケージを入手することもできます。
=== Rustup による公式のインストール方法 ===
 
  +
  +
=== Rustup によるインストール方法 ===
   
 
Rust でソフトウェアを開発するときに、公式に推奨されている Rust のインストール方法は [https://www.rustup.rs/ Rustup ツールチェインマネージャ] を使用する方法です (Rustup は Rust で書かれています)。
 
Rust でソフトウェアを開発するときに、公式に推奨されている Rust のインストール方法は [https://www.rustup.rs/ Rustup ツールチェインマネージャ] を使用する方法です (Rustup は Rust で書かれています)。
   
ソフトウェアリポジトリに存在するスタンドアロンな Rust を使用しないで、Rustup ツールチェインマネージャを使用する利点として、複数のプラットフォーム (Windows, Mac, Android) やアーキテクチャ (x86, x86_64, arm) 用に複数のツールチェイン (stable, beta, nightly) をインストールすることができる点が挙げられます。また、[https://github.com/Manishearth/rust-clippy Clippy] などのツールはコンパイラプラグインのサポートを必要としており、Rust のナイトリービルドでしか使えないことも特記すべきことでしょう
+
ソフトウェアリポジトリに存在するスタンドアロンな Rust を使用しないで、Rustup ツールチェインマネージャを使用する利点として、複数のプラットフォーム (Windows, Mac, Android) やアーキテクチャ (x86, x86_64, arm) 用に複数のツールチェイン (stable, beta, nightly) をインストールすることができる点が挙げられます。
   
Rustup インストールする方法は2つ存在します:
+
==== 上流のインストールスクリプト ====
   
* {{ic|curl -f <nowiki>https://sh.rustup.rs</nowiki> > rust.sh}} ファイルをダウンロードし {{ic|./rust.sh}} でスクリプトを実行してください。rustup をアップデートしたい場合は {{ic|rustup self update}} を実行するだけです。
+
{{ic|curl -f <nowiki>https://sh.rustup.rs</nowiki> > rust.sh}} としてファイルをダウンロードします。そのあと、{{ic|less ./rust.sh}} でファイルの内容を確認した上で、{{ic|./rust.sh}} でスクリプトを実行してください。スクリプトはログインシェルの[[Bash#実行|設定ファイル]]の PATH のみ変更します。一度ログアウトしてからログインしなおすか {{ic|source $HOME/.cargo/env}} を実行する必要があります。rustup をアップデート {{ic|rustup self update}} を実行するだけです。
* {{Pkg|rustup}} は[[公式リポジトリ]]からインストールすることもできます。公式リポジトリからインストールした場合 {{ic|rustup self update}} は使用できないので注意してください。pacman で直接パッケージをアップデートする必要があります。
 
   
  +
{{Warning|[https://rustup.rs/ Rustup] のドキュメントに書かれている、{{ic|curl ''some-url'' | sh}} を実行するのは、セキュリティ上のリスクがあると考えられます。ダウンロード中に壊れさえするかもしれない、未知のソースコードを実行するからです。従って、実行する前に、手動でダウンロードし内容を確認することが推奨されます。}}
デフォルトでは、あなたが現在使用しているアーキテクチャの stable チャンネルだけがインストールされます。使用するには、インストールされた stable チャンネルがデフォルトで使用されるように指定する必要があります:
 
   
 
{{Note|{{ic|rustup}} コマンドを実行する前に PATH に {{ic|$HOME/.cargo/bin}} を追加してください。}}
 
{{Note|{{ic|rustup}} コマンドを実行する前に PATH に {{ic|$HOME/.cargo/bin}} を追加してください。}}
  +
  +
==== Arch Linux パッケージ ====
  +
  +
{{Pkg|rustup}} は[[公式リポジトリ]]からインストールすることもできます。公式リポジトリからインストールした場合 {{ic|rustup self update}} は使用できないので注意してください。pacman で直接パッケージをアップデートする必要があります。
  +
  +
この方法だと、Rust のバイナリが {{ic|~/.cargo/bin}} ではなく {{ic|/usr/bin}} にあり、{{ic|PATH}} に別のディレクトリを加えなくてよい利点があります。
  +
  +
{{Note|既定では、{{Pkg|rustup}} パッケージをインストールしても、ツールチェインはインストール'''されません'''。かわりに、{{ic|/usr/bin/rustup}} コマンドから {{ic|/usr/bin/rustc}} や {{ic|/usr/bin/cargo}} など一般的なバイナリにシンボリックリンクが張られます。次に述べるように、Rust コマンドを動作させるには、利用者が手動でツールチェインをインストールする必要があります。}}
  +
  +
ツールチェインをインストールするには、{{ic|stable}} か {{ic|nightly}} のどちらのバージョンを使用するか rustup に指定する必要があります:
   
 
{{bc|<nowiki>
 
{{bc|<nowiki>
43行目: 54行目:
 
</nowiki>}}
 
</nowiki>}}
   
  +
==== 使い方 ====
それから {{ic|rustc -V}} を使って rust のバージョンを確認してください:
 
   
  +
{{ic|stable}}、{{ic|beta}}、{{ic|nightly}} や {{ic|1.23.0}} などのツールチェインを手動でインストールする必要があったり、また、他のツールチェインを使用したりテストするときには次のコマンドを入力します:
{{hc|$ rustc -V |<nowiki>
 
rustc 1.9.0 (e4e8b6668 2016-05-18)
 
</nowiki>}}
 
   
  +
$ rustup toolchain install ''toolchain''
nightly をインストール・使用したい場合、以下のコマンドを実行:
 
   
  +
すると、Rust コマンドを {{ic|rustup run ''toolchain'' ''command''}} として実行できます。これらのコマンドを直接実行するには、ツールチェインをアクティベートする必要があります:
{{bc|<nowiki>
 
$ rustup install nightly
+
$ rustup default toolchain
$ rustup default nightly
 
</nowiki>}}
 
   
バージョンを確認:
+
{{ic|rustc -V}} を使って rust のバージョンを確認してください:
   
 
{{hc|$ rustc -V |<nowiki>
 
{{hc|$ rustc -V |<nowiki>
rustc 1.11.0-nightly (01411937f 2016-07-01)
+
rustc 1.26.0 (a77568041 2018-05-07)
 
</nowiki>}}
 
</nowiki>}}
  +
  +
{{Note|Rustup は {{Pkg|rust}} パッケージに含まれている Rust コマンドのうち、{{ic|rustfmt}} や {{ic|rls}} などいくつかをインストールしません。これにより、Rust メンテナが nightly チャンネルを {{ic|rustfmt}}/{{ic|rls}} が壊れていても提供できるようになります。これらをインストールするには、個別に {{ic|rustup component add rls}} および {{ic|rustup component add rustfmt}} を実行します。また、実行することで、{{ic|rustfmt}}/{{ic|rls}} が壊れる場合、nightly チャンネルの更新を保留するようになります。}}
  +
  +
{{Note|Rust 自身にはリンカはないので、リンカが別途インストールされてなければなりません。リンカとして例えば {{Pkg|gcc}} をインストールすることができます。リンカがないと Rust は {{ic|error: linker `cc` not found.}} とエラーを出力します。}}
   
 
=== インストールのテスト ===
 
=== インストールのテスト ===
94行目: 105行目:
 
このセクションでは、{{ic|$ARCH}} がターゲットのアーキテクチャです ({{ic|x86_64}} または {{ic|i686}})。
 
このセクションでは、{{ic|$ARCH}} がターゲットのアーキテクチャです ({{ic|x86_64}} または {{ic|i686}})。
   
# {{Pkg|mingw-w64-gcc}} と {{Pkg|wine}} を[[インストール]]。
+
# {{AUR|mingw64-w64-gcc-base}}{{Broken package link|パッケージが存在しません}} と {{Pkg|mingw-w64-gcc}} と {{Pkg|wine}} を[[インストール]]。
# Windows の実行可能ファイルの binfmt の定義を手動で追加するか {{AUR|binfmt-wine}} をインストール。
 
 
# rustup を使っている場合、{{ic|rustup install stable-$ARCH-pc-windows-gnu}} と {{ic|rustup target add $ARCH-pc-windows-gnu}} を実行することで rust と標準ライブラリをインストールできます。rustup を使っていない場合、rustlib ディレクトリ ({{AUR|rust-nightly-bin}} を使用する場合は {{ic|/usr/local/lib/rustlib}}、公式の {{Pkg|rust}} パッケージを使用する場合は {{ic|/usr/lib/rustlib}}) に Windows 用の Rust の標準ライブラリのコピーをインストールします。一番簡単な方法は、ターゲットとするアーキテクチャの Windows 用の Rust インストーラーをダウンロードして、Wine を使ってインストール ({{ic|wine start my-rust-installer.msi}}) してから rustlib ディレクトリにコピー {{ic|$INSTALL_DIR/bin/rustlib/$ARCH-pc-windows-gnu}} する方法です。
 
# rustup を使っている場合、{{ic|rustup install stable-$ARCH-pc-windows-gnu}} と {{ic|rustup target add $ARCH-pc-windows-gnu}} を実行することで rust と標準ライブラリをインストールできます。rustup を使っていない場合、rustlib ディレクトリ ({{AUR|rust-nightly-bin}} を使用する場合は {{ic|/usr/local/lib/rustlib}}、公式の {{Pkg|rust}} パッケージを使用する場合は {{ic|/usr/lib/rustlib}}) に Windows 用の Rust の標準ライブラリのコピーをインストールします。一番簡単な方法は、ターゲットとするアーキテクチャの Windows 用の Rust インストーラーをダウンロードして、Wine を使ってインストール ({{ic|wine start my-rust-installer.msi}}) してから rustlib ディレクトリにコピー {{ic|$INSTALL_DIR/bin/rustlib/$ARCH-pc-windows-gnu}} する方法です。
 
# 最後に、cargo の設定ファイルに以下を追加して MinGW-w64 の gcc/ar のパスを cargo に指定します:
 
# 最後に、cargo の設定ファイルに以下を追加して MinGW-w64 の gcc/ar のパスを cargo に指定します:
118行目: 128行目:
 
== Cargo ==
 
== Cargo ==
   
Rust のパッケージマネージャである [https://crates.io/ Cargo] は {{Pkg|cargo}} で[[インストル]]できます。ナイトリー版は AUR の {{AUR|cargo-nightly-bin}} でインストールできます。{{Pkg|rustup}} を使用している場合、Cargo は既にインストールされています。
+
Rust のパッケージマネージャである [https://crates.io/ Cargo] は {{Pkg|rust}} パッケジに付属しています。ナイトリー版は AUR の {{AUR|cargo-nightly-bin}} でインストールできます。{{Pkg|rustup}} を使用している場合、Cargo は既にインストールされています。
   
 
Cargo は Rust プロジェクトの依存関係を宣言することができるようにするツールであり、それによってビルドがいつでも通ることが保証されます。
 
Cargo は Rust プロジェクトの依存関係を宣言することができるようにするツールであり、それによってビルドがいつでも通ることが保証されます。
135行目: 145行目:
 
}}
 
}}
 
}}
 
}}
  +
  +
=== sccache ===
  +
[https://github.com/mozilla/sccache sccache] を使うと中間生成物をキャッシュすることで、前回のコンパイル時から変化しない部分の再コンパイル時間を省きます。{{Pkg|sccache}} パッケージで[[インストール]]できます。
  +
  +
Cargo で利用するには以下の方法があります。
  +
{{ic|RUSTC_WRAPPER}} [[環境変数]]を設定することで一時的に sccache を利用できます:
  +
RUSTC_WRAPPER=sccache cargo build
  +
  +
常に利用するようにするには、{{ic|~/.cargo/config}} に以下の設定を加えます:
  +
{{hc|~/.cargo/config|<nowiki>
  +
[build]
  +
rustc-wrapper = "sccache"
  +
</nowiki>}}
   
 
== IDE のサポート ==
 
== IDE のサポート ==
144行目: 167行目:
 
[https://github.com/phildawes/racer Racer] 自動補完エンジンは Rust の自動補完が必要な際に現在最も優れている選択肢です。ただし、Racer を使うには Rust のソースコードのコピーをインストールする必要があります。入手する方法は複数存在します:
 
[https://github.com/phildawes/racer Racer] 自動補完エンジンは Rust の自動補完が必要な際に現在最も優れている選択肢です。ただし、Racer を使うには Rust のソースコードのコピーをインストールする必要があります。入手する方法は複数存在します:
 
* rustup を使う: {{ic|rustup component add rust-src}}。
 
* rustup を使う: {{ic|rustup component add rust-src}}。
* AUR を使う: {{Aur|rust-src}} または {{Aur|rust-nightly-src}}。AUR を使用する場合は {{ic|RUST_SRC_PATH}} 環境変数を設定してください。
+
* AUR を使う: {{Aur|rust-src}}{{Broken package link|パッケージが存在しません}} または {{Aur|rust-nightly-src}}。AUR を使用する場合は {{ic|RUST_SRC_PATH}} 環境変数を設定してください。
 
ソースコードをインストールしたら、{{pkg|rust-racer}} パッケージをインストールするか、[[#Cargo|Cargo]] を使って Racer をインストールすることができます:
 
ソースコードをインストールしたら、{{pkg|rust-racer}} パッケージをインストールするか、[[#Cargo|Cargo]] を使って Racer をインストールすることができます:
   
156行目: 179行目:
   
 
=== エディタ ===
 
=== エディタ ===
  +
  +
{{Note|IDE やテキストエディタの対応状況については [https://areweideyet.com/ Are we (I)DE yet?] にも述べられています。}}
   
 
==== Atom ====
 
==== Atom ====
   
[[Atom]] は [https://vertexclique.github.io/tokamak/ Tokamak IDE] プラグインで Rust 言語をサポートします。
+
[[Atom]] はプラグインで Rust 言語をサポートします: [https://atom.io/packages/language-rust language-rust] と [https://atom.io/packages/linter-rust linter-rust]
  +
  +
==== IntelliJ IDEA ====
  +
  +
[[IntelliJ IDEA]] には [https://github.com/intellij-rust/intellij-rust Rust プラグイン] が存在します。CLion でも同じプラグインが使えます。ツールチェインを設定するときは rustup を使ってソースをダウンロード ({{ic|rustup component add rust-src}}) して、ツールチェインのディレクトリとして {{ic|~/.rustup/toolchains/<your toolchain>/bin}} を選択してください。
   
 
==== Visual Studio Code ====
 
==== Visual Studio Code ====
167行目: 196行目:
 
==== Vim ====
 
==== Vim ====
   
[[Vim]] による Rust のサポートは [https://github.com/racer-rust/vim-racer vim-racer] プラグインで得ることができます。
+
[[Vim]] による Rust のサポートは公式の [https://github.com/rust-lang/rust.vim rust.vim] プラグインで得ることができます。
  +
  +
====Emacs====
  +
  +
Emacs の Rust サポートは公式の [https://github.com/rust-lang/rust-mode rust-mode] プラグインか {{AUR|emacs-rust-mode}}{{Broken package link|パッケージが存在しません}} パッケージで有効にできます。
   
 
== 参照 ==
 
== 参照 ==

2021年1月20日 (水) 18:00時点における版

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 を実行するだけです。

警告: Rustup のドキュメントに書かれている、curl some-url を実行するのは、セキュリティ上のリスクがあると考えられます。ダウンロード中に壊れさえするかもしれない、未知のソースコードを実行するからです。従って、実行する前に、手動でダウンロードし内容を確認することが推奨されます。
ノート: rustup コマンドを実行する前に PATH に $HOME/.cargo/bin を追加してください。

Arch Linux パッケージ

rustup公式リポジトリからインストールすることもできます。公式リポジトリからインストールした場合 rustup self update は使用できないので注意してください。pacman で直接パッケージをアップデートする必要があります。

この方法だと、Rust のバイナリが ~/.cargo/bin ではなく /usr/bin にあり、PATH に別のディレクトリを加えなくてよい利点があります。

ノート: 既定では、rustup パッケージをインストールしても、ツールチェインはインストールされません。かわりに、/usr/bin/rustup コマンドから /usr/bin/rustc/usr/bin/cargo など一般的なバイナリにシンボリックリンクが張られます。次に述べるように、Rust コマンドを動作させるには、利用者が手動でツールチェインをインストールする必要があります。

ツールチェインをインストールするには、stablenightly のどちらのバージョンを使用するか rustup に指定する必要があります:

$ rustup default stable

使い方

stablebetanightly1.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)
ノート: Rustup は rust パッケージに含まれている Rust コマンドのうち、rustfmtrls などいくつかをインストールしません。これにより、Rust メンテナが nightly チャンネルを rustfmt/rls が壊れていても提供できるようになります。これらをインストールするには、個別に rustup component add rls および rustup component add rustfmt を実行します。また、実行することで、rustfmt/rls が壊れる場合、nightly チャンネルの更新を保留するようになります。
ノート: Rust 自身にはリンカはないので、リンカが別途インストールされてなければなりません。リンカとして例えば gcc をインストールすることができます。リンカがないと Rust は error: linker `cc` not found. とエラーを出力します。

インストールのテスト

以下のようなシンプルなプログラムをビルドして、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. mingw64-w64-gcc-baseAUR[リンク切れ: パッケージが存在しません]mingw-w64-gccwineインストール
  2. 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 する方法です。
  3. 最後に、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 のパッケージマネージャである Cargorust パッケージに付属しています。ナイトリー版は 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>"]

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

エディタ

ノート: IDE やテキストエディタの対応状況については Are we (I)DE yet? にも述べられています。

Atom

Atom はプラグインで Rust 言語をサポートします: language-rustlinter-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[リンク切れ: パッケージが存在しません] パッケージで有効にできます。

参照