|
16 | 16 | [crates-2019]: https://github.com/rust-lang-ja/atcoder-rust-resources/wiki/Crates-2019
|
17 | 17 |
|
18 | 18 |
|
| 19 | +## 内容についてのお問い合わせなど |
| 20 | + |
| 21 | +内容について質問などがありましたら、[GitHub Issue][gh-issue]などでご連絡ください。 |
| 22 | + |
| 23 | +なお本章のMarkdownソースファイルはGitHub [rust-lang-ja/atcoder-rust-resources][gh]にあります。 |
| 24 | + |
| 25 | +[gh-issue]: https://github.com/rust-lang-ja/atcoder-rust-resources/issues |
| 26 | +[gh]: https://github.com/rust-lang-ja/atcoder-rust-resources |
| 27 | + |
| 28 | + |
19 | 29 | ## 素のRust環境について
|
20 | 30 |
|
21 | 31 | [AtCoder 2019/7 Language Updateのスプレッドシート][spreadsheet]では、従来のようにクレートがインストールされていない「素のRust環境」の併設を望む声もあるようです。
|
22 | 32 |
|
23 | 33 | [spreadsheet]: https://docs.google.com/spreadsheets/d/1PmsqufkF3wjKN6g1L0STS80yP4a6u-VdGiEv5uOHe0M/edit
|
24 | 34 |
|
25 |
| -本章の内容に従って環境をセットアップした場合に、ユーザプログラム(選手が提出したプログラム)が従来のようにクレートを使用しないなら、インストールしたクレートはないものと同じになります。 |
26 |
| -使用しないクレートはユーザプログラムの実行ファイルになんら影響を与えません。 |
27 |
| -このことから素のRust環境を別途用意する必要はなさそうに思えます。 |
| 35 | +そのような環境を望む理由については、正直な話、よくわかりません。 |
| 36 | +本章の手順に従ってセットアップした環境が問題なく動作するなら、わざわざ別の環境を用意する必要はないからです。 |
| 37 | +もしユーザプログラム(選手が提出したプログラム)がクレートを使わないなら、本章の手順でインストールしたクレートはないものと同じになります。 |
| 38 | +コンパイルにかかる時間やコンパイルによって生成される実行ファイルには影響を与えません。 |
28 | 39 |
|
29 |
| -もしそれでも心配という声があるようなら、素のRust環境を別途用意することも可能です。 |
30 |
| -その場合は以下の環境変数の値を変える(または`unset`する)ことで、本章でセットアップする環境と、素のRust環境を切り替えることができます。 |
| 40 | +もしかしたら本章でインストールしたツール(クレート検索パス生成ツール)が何かのタイミングでうまく動かなくなり、コンパイルできなくなるなどの障害が起こることを心配しているのかもしれません。とはいえジャッジサーバの環境は固定されていますので、そういうことは起こりにくいと考えられます。 |
31 | 41 |
|
32 |
| -| 環境変数 | 本章でセットアップする環境(クレートを使用できる環境)を使用する場合 | 素のRust環境を使用する場合 | |
33 |
| -|:--|:--|:--| |
34 |
| -| `RUSTUP_HOME` | `/usr/local/lib/rust/rustup` | `rustup`をデフォルトの場所にインストールしたのなら`unset RUSTUP_HOME` | |
35 |
| -| `CARGO_HOME` |`/usr/local/lib/rust/cargo` | `cargo`をデフォルトの場所にインストールしたのなら`unset CARGO_HOME` | |
| 42 | +もしそれでも欲しいという声があるなら、素のRust環境を別途用意することも技術的には可能です。 |
36 | 43 |
|
37 | 44 |
|
38 |
| -## 内容についてのお問い合わせなど |
| 45 | +### 方法1:環境は1つのまま、コンパイルコマンドを2種類用意する |
39 | 46 |
|
40 |
| -内容について質問などがありましたら、[GitHub Issue][gh-issue]などでご連絡ください。 |
| 47 | +1つ目の方法は、環境自体は本章の手順で1つだけセットアップして、コンパイルコマンドを切り替えることです。 |
41 | 48 |
|
42 |
| -なお本章のMarkdownソースファイルはGitHub [rust-lang-ja/atcoder-rust-resources][gh]にあります。 |
| 49 | +本章でセットアップする環境では、以下のようにクレート検索パス生成ツール(`rustc-dep-option-generator`コマンド)付きでコンパイラを実行します。 |
43 | 50 |
|
44 |
| -[gh-issue]: https://github.com/rust-lang-ja/atcoder-rust-resources/issues |
45 |
| -[gh]: https://github.com/rust-lang-ja/atcoder-rust-resources |
| 51 | +```console |
| 52 | +$ RUST_LIB=$RUST_HOME/lib |
| 53 | +$ rustc --edition=2018 -C opt-level=3 \ |
| 54 | + $(rustc-dep-option-generator $RUST_LIB/Cargo.toml $RUST_LIB/target/release/deps) \ |
| 55 | + main.rs |
| 56 | +``` |
| 57 | + |
| 58 | +素の環境、つまりクレートがインストールされていない環境と同じにするには、クレート検索パス生成ツールを使わずにコンパイラを実行します。 |
| 59 | + |
| 60 | +```console |
| 61 | +$ rustc --edition=2018 -C opt-level=3 main.rs |
| 62 | +``` |
| 63 | + |
| 64 | +これならクレート検索パス生成ツールが動かなくなる可能性を心配しないですみます。 |
| 65 | + |
| 66 | + |
| 67 | +### 方法2:文字通り2つの環境を用意する |
| 68 | + |
| 69 | +2つ目の方法は、本章の環境に加えて、素のRust環境も用意することです。 |
| 70 | +シェルの環境変数`RUSTUP_HOME`と`CARGO_HOME`を本章のものとは違う値に設定して(または`unset`して)`rustup`をインストールすれば、本章の環境とは別の場所にRustツールチェインがインストールでされます。 |
| 71 | + |
| 72 | +コンパイルの際も環境変数の値を変えることで、本章でセットアップする環境と、素のRust環境を切り替えます。 |
| 73 | + |
| 74 | +| 環境変数 | 本章でセットアップする環境(クレートを使用できる環境)を使用する場合 | 素のRust環境を使用する場合 | |
| 75 | +|:--|:--|:--| |
| 76 | +| `RUSTUP_HOME` | `/usr/local/lib/rust/rustup` | `rustup`をデフォルトの場所にインストールしたのなら`unset RUSTUP_HOME` | |
| 77 | +| `CARGO_HOME` |`/usr/local/lib/rust/cargo` | `cargo`をデフォルトの場所にインストールしたのなら`unset CARGO_HOME` | |
0 commit comments