🌟
DevcontainerでAtcoderの環境を構築してみた (Rust)
概要
Rustの勉強のため競技プログラミングをやってみようと思い、DevContainer + cargo-compete を使って構築しました。以下のような工夫を加えています:
- DockerベースのRust開発環境をDevContainerで定義
- Rustツールチェインと競プロ用ツールの自動インストール(cargo-equip, cargo-compete, cargo-udeps)
- Rustのアップデートと依存の事前フェッチ
- キャッシュとビルド成果物の永続化(cargoとtargetディレクトリをvolume化)
Github Repository
作成した環境は以下のGithubリポジトリで公開しています。
使用ツールと前提
- VS Code + devcontainer 拡張
- Docker (Podman未検証)
- Rust toolchain v1.70.0 (Atcoder対応バージョン)
- cargo-compete(AtCoder提出補助ツール)
環境構築手順
1. リポジトリをクローン
git clone https://github.com/your-repo-link
cd atcoder-starterkit-rust
2. Devcontainerで開く
- VS Code で「Reopen in Container」で開く。
2. rust-analyzer の設定
- コンテナ内で動作するRustに合わせて互換性のある rust-analyzer をインストールする。
code --install-extension rust-lang.rust-analyzer@0.3.1402
3. cargo-competeでlogin
cargo compete login atcoderでログインする。
4. コンテストの開始とtest・submit
cargo competeを使いコンテストに参加します。
簡単な例↓
cargo compete new abc054
cd abc054
cargo compete test a
cargo compete submit a
- 問題ごとにテンプレートとテストケースが生成されます。
- submit が失敗する場合は手動提出してください。
その他
- cargo-compete の使い方詳細は 公式README(日本語) を参照してください。
おわりに
- DevContainerによりRustでAtcoderに挑戦する環境を構築しました。
- ばりばりAtcoder挑戦してつよつよエンジニアを目指します。
- 不明な点・問題点があればコメントください。
Discussion