このリポジトリにはAtCoderコンテスト(競技プログラミング)にRustで参加するためのCargoパッケージテンプレートが用意されています。 パッケージはcargo-generateで作成します。
このREADME.md
ではja
テンプレートの内容について説明します。
他のテンプレートについてはこちらをご覧ください。
- AtCoder 2019年言語アップデート後の環境向け
- Rust 1.42.0
rustup
でインストールされていることを前提にしている
TODO もう少し詳しく書く
以下のコマンドでcargo-generateをインストールします。
$ sudo apt install libssl-dev pkg-config
$ cargo install cargo-generate
$ cargo install cargo-generate
cargo-generateが依存しているopenss-sysクレートは、macOSに元から入っているOpenSSLライブラリのバージョンに対応していません。 (OpenSSLのバージョンが低すぎる) そのOpenSSLライブラリを使おうとすると以下のようなエラーになります。
error failed to run custom build command for `openssl-sys v0.9.47`
...
It looks like you're compiling on macOS, where the system contains a version of
OpenSSL 0.9.8. This crate no longer supports OpenSSL 0.9.8.
As a consumer of this crate, you can fix this error by using Homebrew to
install the `openssl` package, ...
エラーメッセージのおすすめにしたがって、Homebrewで新しいバージョンのOpenSSLライブラリをインストールします。
$ brew install openssl
cargo-generateをインストールします。
$ cargo install cargo-generate
cargo generate
コマンドでパッケージを生成します。
$ cargo generate --name abc086c \
--git https://github.com/rust-lang-ja/atcoder-rust-base \
--branch ja
--name
: これから作成するパッケージの名前。好きな名前が付けられる。例:abc086c
--branch
: このテンプレートリポジトリのブランチ名。ja
テンプレートを使うならja
を指定する
-
使用するクレートの選択
Cargo.toml
ファイルを開き[dependencies]
セクションに書かれているクレートのなかで必要なものがあればコメントを外します。- 注意:AtCoderの環境では、これら以外のクレートは使用できません。またバージョンも固定されています。
-
使用するクレートのドキュメントの生成
-
必須ではありませんが、以下のコマンドで依存クレートのドキュメントをビルドし、Webブラウザで開いておくと便利でしょう。
$ cargo doc --open # ドキュメントのビルドし、ビルドできたらWebブラウザで開く # または $ cargo doc # ドキュメントのビルドのみ行う
-
-
テストケースの作成
tests/sample_inputs.rs
ファイルには、ひな型となるテストケースが用意されています。- AtCoderの問題文に書かれているサンプル入出力をこのファイルに書き写します。
これにより
cargo test
でプログラムの動作が確認できるようになります(後述)。
-
プログラムの作成
src/main.rs
に解答となるプログラムを書きます。
-
テストケースの実行
-
以下のコマンドでテストケースを実行し、テストにパスすることを確認します。
$ cargo test -j 1
実行例
$ cargo test -j 1 ... Finished dev [unoptimized + debuginfo] target(s) in 25.31s Running target/debug/deps/main-aae3efe8c7e14c29 running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out Running target/debug/deps/sample_inputs-946c74199de6e6a4 running 3 tests No test sample2 ... ok Yes test sample1 ... ok No test sample3 ... ok test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
-
-j
オプションはテストケース実行の並列数を指定し、デフォルト値はCPUの論理コア数です。-j 1
を指定すると、テストケースが複数あるときに、それらを1つずつ順番に実行するようになります。 -
上の例では
No
やYes
のようにプログラムからの標準出力を表示しています。 もしテストケースが並列に実行されると複数のテストケースからの標準出力が混ざって分かりにくくなります。-j 1
の指定は、このようなときに便利です。
-
-
プログラムの提出
- プログラムが完成したら
src/main.rs
の内容をAtCoderに提出します。AC
を目指して頑張ってください。
- プログラムが完成したら
AtCoderの環境では、Cargo.toml
にあらかじめ書かれているクレートのみが使用できます。
それら以外のクレートを追加すると、手元ではコンパイルできてもAtCoderの環境ではコンパイルエラーになりますので注意してください。
またクレートのバージョンも固定されており、変更できません。
本リポジトリの内容は MITライセンス のもとで公開されています。 詳しくはLICENSEファイルを参照してください。