1
1
<!-- -*- coding:utf-8-unix -*- -->
2
2
3
- # AtCoder Rust Base
3
+ # AtCoder Rust Base ( ` ja ` テンプレート)
4
4
5
- このリポジトリは[ AtCoder] [ atcoder ] コンテスト(競技プログラミング)にRustで参加するためのCargoパッケージテンプレートです。
6
- パッケージの作成は[ cargo-generate] [ cargo-generate-crate ] で行います。
5
+ このリポジトリには[ AtCoder] [ atcoder ] コンテスト(競技プログラミング)にRustで参加するためのCargoパッケージテンプレートが用意されています。
6
+ パッケージは[ cargo-generate] [ cargo-generate-crate ] で作成します。
7
+
8
+ ** この` README.md ` では` ja ` テンプレートの内容について説明します** 。
9
+ 他のテンプレートについては[ こちら] [ list-of-templates ] をご覧ください。
7
10
8
11
[ atcoder ] : https://atcoder.jp
9
12
[ cargo-generate-crate ] : https://crates.io/crates/cargo-generate
13
+ [ list-of-templates ] : https://github.com/rust-lang-ja/atcoder-rust-base/blob/master/README.md#用意されているテンプレート
10
14
11
15
12
- ## 用意されているテンプレート
13
-
14
- 以下のテンプレートが用意されています。
15
-
16
- | 名前 | Rustバージョン | 内容 |
17
- | :-- | :--:| :-- |
18
- | [ ja] [ ja-branch ] | 1.35.0 | 標準的な内容のテンプレートに日本語のソースコードコメントを付けたもの。注意:2019年言語アップデート後の環境向け。Rust 1.15.1の環境では使用できない |
19
- | [ vendor-ja] [ vendor-ja-branch ] | 1.35.0 | jaをベースに、依存するクレートのソースコードを` vendor ` ディレクトリ配下に展開したもの。AtCoderの運営者が環境構築に使用できる。注意:Rust 1.15.1の環境では使用できない |
16
+ ## ` ja ` テンプレートの内容
20
17
21
- If you want a template with English source code comments, please request it to us by filing [ a GitHub issue ] [ gh-issue ] .
18
+ ** TODO ** もう少し詳しく書く
22
19
23
- [ ja-branch ] : https://github.com/rust-lang-ja/atcoder-rust-base/tree/ja
24
- [ vendor-ja-branch ] : https://github.com/rust-lang-ja/atcoder-rust-base/tree/vendor-ja
25
- [ gh-issue ] : https://github.com/rust-lang-ja/atcoder-rust-base/issues
20
+ - AtCoder 2019年言語アップデート後の環境向け
21
+ - Rust 1.35.0
26
22
27
23
28
24
## 使いかた
@@ -31,35 +27,93 @@ If you want a template with English source code comments, please request it to u
31
27
32
28
** TODO**
33
29
30
+
34
31
### パッケージの生成
35
32
36
- 1 . ` cargo generate ` コマンドでパッケージを生成します。
33
+ ` cargo generate ` コマンドでパッケージを生成します。
34
+
35
+ ``` console
36
+ $ cargo generate --name abc086c \
37
+ --git https://github.com/rust-lang-ja/atcoder-rust-base \
38
+ --branch ja
39
+ ```
40
+
41
+ - ` --name ` : これから作成するパッケージの名前。好きな名前が付けられる。例:` abc086c `
42
+ - ` --branch ` : このテンプレートリポジトリのブランチ名。` ja ` テンプレートを使うなら` ja ` を指定する
43
+
44
+
45
+ ### 解答となるプログラムの作成
46
+
47
+ 1 . 使用するクレートの選択
48
+ - [ ` Cargo.toml ` ] [ cargo-toml-file ] ファイルを開き` [dependencies] ` セクションに書かれているクレートのなかで、必要なものがあればコメントを外します。
49
+ - 注意:AtCoderの環境では、これら以外のクレートは使用できません。またバージョンも固定されています。
50
+
51
+ 1 . 使用するクレートのドキュメントの生成
52
+ - 必須ではありませんが、以下のコマンドで依存クレートのドキュメントをビルドし、Webブラウザで開いておくと便利でしょう。
37
53
38
- ``` console
39
- $ cargo generate --name abc086c --git https://github.com/rust-lang-ja/atcoder-rust-base --branch ja
40
- ```
54
+ ``` console
55
+ $ cargo doc --open # ドキュメントのビルドし、ビルドできたらWebブラウザで開く
56
+ # または
57
+ $ cargo doc # ドキュメントのビルドのみ行う
58
+ ```
41
59
42
- - ` --name ` : パッケージの名前。例:` abc086c `
43
- - ` --branch ` : このテンプレートリポジトリのブランチ名。` ja ` テンプレートを使いたいなら` ja ` を指定する
60
+ 1. テストケースの作成
61
+ - [`tests/sample_inputs.rs`](./tests/sample_inputs.rs)ファイルには、ひな型となるテストケースが用意されています。
62
+ - AtCoderの問題文に書かれているサンプル入出力をこのファイルに書き写します。
63
+ これにより、`cargo test`でプログラムの動作が確認できるようになります。
44
64
45
- 1 . [ ` Cargo.toml ` ] ( ./Cargo.toml ) ファイルを開き` [dependencies] ` セクションにあるクレートのなかで必要なもののコメントを外します。
65
+ 1. プログラムの作成
66
+ - [`src/main.rs`](./src/main.rs)に解答となるプログラムを書きます。
46
67
47
- 1 . [ ` tests/sample_inputs.rs ` ] ( ./tests/sample_inputs.rs ) ファイルを開き、テストケースを追加します。
68
+ 1. テストケースの実行
69
+ - 以下のコマンドでテストケースを実行し、テストにパスすることを確認します。
48
70
49
- 1 . [ ` src/main.rs ` ] ( ./src/main.rs ) に解答となるプログラムを書きます。
71
+ ```console
72
+ $ cargo test -j 1
73
+ ```
50
74
51
- 1 . 以下のコマンドでテストケースを実行し、テストにパスするか確認します。
75
+ **実行例**
52
76
53
- ``` console
54
- $ cargo test -j 1
55
- ```
77
+ ```console
78
+ $ cargo test -j 1
79
+ ...
80
+ Finished dev [unoptimized + debuginfo] target(s) in 25.31s
81
+ Running target/debug/deps/main-aae3efe8c7e14c29
56
82
57
- 1 . プログラムが完成したら、AtCoderに` src/main.rs ` の内容を提出します。
83
+ running 0 tests
84
+
85
+ test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
86
+
87
+ Running target/debug/deps/sample_inputs-946c74199de6e6a4
88
+
89
+ running 3 tests
90
+ No
91
+ test sample2 ... ok
92
+ Yes
93
+ test sample1 ... ok
94
+ No
95
+ test sample3 ... ok
96
+
97
+ test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
98
+ ```
99
+
100
+ - `-j`オプションはテストケース実行の並列数を指定し、デフォルト値はCPUの論理コア数です。
101
+ `-j 1`を指定すると、テストケースが複数あるときに、それらを1つずつ順番に実行するようになります。
102
+ - 上の例では`No`や`Yes`のようにプログラムからの標準出力を表示しています。
103
+ もしテストケースが並列に実行されると、複数のテストケースからの標準出力が混ざって分かりにくくなります。
104
+ `-j 1`の指定は、このようなときに便利です。
105
+
106
+
107
+ 1. プログラムの提出
108
+ - プログラムが完成したら、`src/main.rs`の内容をAtCoderに提出します。
109
+ `AC`を目指して頑張ってください。
110
+
111
+ [cargo-toml-file]: ./Cargo.toml
58
112
59
113
60
114
## 使用可能なクレート
61
115
62
- ** TODO **
116
+ AtCoderの環境では、[`Cargo.toml`][cargo-toml-file]にあらかじめ書かれているクレートのみが使用できます。それら以外のクレートを追加するとコンパイルエラーになりますので注意してください。
63
117
64
118
65
119
## ライセンス / License
0 commit comments