🌟

DevcontainerでAtcoderの環境を構築してみた (Rust)

に公開

概要

Rustの勉強のため競技プログラミングをやってみようと思い、DevContainer + cargo-compete を使って構築しました。以下のような工夫を加えています:

  • DockerベースのRust開発環境をDevContainerで定義
  • Rustツールチェインと競プロ用ツールの自動インストール(cargo-equip, cargo-compete, cargo-udeps)
  • Rustのアップデートと依存の事前フェッチ
  • キャッシュとビルド成果物の永続化(cargoとtargetディレクトリをvolume化)

Github Repository

作成した環境は以下のGithubリポジトリで公開しています。

https://github.com/Coxless/atcoder-starterkit-rust

使用ツールと前提

  • 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 が失敗する場合は手動提出してください。

その他

おわりに

  • DevContainerによりRustでAtcoderに挑戦する環境を構築しました。
  • ばりばりAtcoder挑戦してつよつよエンジニアを目指します。
  • 不明な点・問題点があればコメントください。
GitHubで編集を提案

Discussion