😽

Rust で競プロ環境整えたメモ

2021/09/18に公開

atcoder-cli のおかげで快適に参加できるようになりました。

tanakh/cargo-atcoder: Cargo subcommand for AtCoder

整えた環境でのコンテスト参加

cargo atcoder new abc214
cd abc214
# Cargo.toml 追加(自動化したい)
# a 問題コーディング
cargo atcoder submit a

cargo atcoder submitcargo atcoder test もしてくれていて、
コンパイルやテストケースに通った場合のみ提出してくれます。

テストケースは cargo atcoer new で問題ページにあるものを取得してくれます。

atcoder-cli + oj ではテンプレート設定とテストケース編集・追加できたのですが、こちらもできるのかはまだわかりません。

実践

asciicast

テンプレートメモ

コンテストごとに追加が必要です。
proconio などの追加。
cargo は node.jsnpm i -S yarn add のように cli から dependencies を追記できないので、 編集が必要そう。
(cargo-edit でもできるみたい)

Cargo
[package]
name = "abc214"
version = "0.1.0"
edition = "2018"

# dependencies added to new project
[dependencies]
+ proconio = { version = "0.3.6", features = ["derive"] }
+ itertools = "0.10.1"

[profile.release]
lto = true
panic = 'abort'

コードテンプレ。

use proconio::input;

fn sub() -> u32 {
    input! {
        n: u32,
    }
    return n;
}

fn main() {
    println!("{}", sub());
}

proconio 0.4 がローカルでうまく動かなかったのでこれにしているが適切なバージョンであるか謎。 #[fastout] も動かなかったりする。

作業プロジェクトの構成

GitHub elzup/anozon-blog

/rust # ←ここで new する
/rust/target
/rust/abc000/.toml
/rust/abc000/Cargo.toml
/rust/abc000/src/bin/a.rs
/rust/abc000/src/bin/b.rs
/rust/abc001
/rust/abc002
GitHubで編集を提案

Discussion