Skip to content

Commit 7e2b9a0

Browse files
committed
Add another option for creating raw Rust environment
1 parent 534eb61 commit 7e2b9a0

File tree

1 file changed

+46
-14
lines changed

1 file changed

+46
-14
lines changed

src/atcoder-env/index.md

Lines changed: 46 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,30 +16,62 @@
1616
[crates-2019]: https://github.com/rust-lang-ja/atcoder-rust-resources/wiki/Crates-2019
1717

1818

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+
1929
## 素のRust環境について
2030

2131
[AtCoder 2019/7 Language Updateのスプレッドシート][spreadsheet]では、従来のようにクレートがインストールされていない「素のRust環境」の併設を望む声もあるようです。
2232

2333
[spreadsheet]: https://docs.google.com/spreadsheets/d/1PmsqufkF3wjKN6g1L0STS80yP4a6u-VdGiEv5uOHe0M/edit
2434

25-
本章の内容に従って環境をセットアップした場合に、ユーザプログラム(選手が提出したプログラム)が従来のようにクレートを使用しないなら、インストールしたクレートはないものと同じになります。
26-
使用しないクレートはユーザプログラムの実行ファイルになんら影響を与えません。
27-
このことから素のRust環境を別途用意する必要はなさそうに思えます。
35+
そのような環境を望む理由については、正直な話、よくわかりません。
36+
本章の手順に従ってセットアップした環境が問題なく動作するなら、わざわざ別の環境を用意する必要はないからです。
37+
もしユーザプログラム(選手が提出したプログラム)がクレートを使わないなら、本章の手順でインストールしたクレートはないものと同じになります。
38+
コンパイルにかかる時間やコンパイルによって生成される実行ファイルには影響を与えません。
2839

29-
もしそれでも心配という声があるようなら、素のRust環境を別途用意することも可能です。
30-
その場合は以下の環境変数の値を変える(または`unset`する)ことで、本章でセットアップする環境と、素のRust環境を切り替えることができます。
40+
もしかしたら本章でインストールしたツール(クレート検索パス生成ツール)が何かのタイミングでうまく動かなくなり、コンパイルできなくなるなどの障害が起こることを心配しているのかもしれません。とはいえジャッジサーバの環境は固定されていますので、そういうことは起こりにくいと考えられます。
3141

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環境を別途用意することも技術的には可能です。
3643

3744

38-
## 内容についてのお問い合わせなど
45+
### 方法1:環境は1つのまま、コンパイルコマンドを2種類用意する
3946

40-
内容について質問などがありましたら、[GitHub Issue][gh-issue]などでご連絡ください
47+
1つ目の方法は、環境自体は本章の手順で1つだけセットアップして、コンパイルコマンドを切り替えることです
4148

42-
なお本章のMarkdownソースファイルはGitHub [rust-lang-ja/atcoder-rust-resources][gh]にあります
49+
本章でセットアップする環境では、以下のようにクレート検索パス生成ツール(`rustc-dep-option-generator`コマンド)付きでコンパイラを実行します
4350

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

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy