AtCoder の Rust のフォルダ構造どうしよう

現状

├── ABC
│   ├── 1
│   │   └── A
│   │       ├── Cargo.lock
│   │       ├── Cargo.toml
│   │       ├── src
│   │           └── main.rs
│   ├── 1
│   │   └── B
│   │       ├── Cargo.lock
│   │       ├── Cargo.toml
│   │       ├── src
│   │       │   └── main.rs

作成するための shellscript がこれ( cargo new しろってのはあります )

  • markdown の仕様で改行とか消したのでちょっとおかしいかもです
if [ -z "" ]; then
    echo "You should set contest number"
    exit 1
fi
mkdir -p ABC/\
alphabet=(A B C D E F G Ex)
for abc in ${alphabet[@]}
do
    mkdir -p ABC/\/$abc/src
    touch ABC/\/$abc/Cargo.toml
    touch ABC/\/$abc/src/main.rs
    echo "[package]
name = \"${abc,}_$1\"
version = \"0.1.0\"
authors = [\"root\"]
edition = \"2018\"
[dependencies]
proconio = \"0.4.5\"
itertools = \"0.10.5\"" > ABC/\/$abc/Cargo.toml
    echo "use proconio::input;
fn main(){
    input!{
    };
}" > ABC/\/$abc/src/main.rs
done

問題点

  • ルートフォルダに Cargo.toml がないので rust-analyzer が使えない

いったんの解決方法

  1. Cargo.toml をルートに追加
  2. 以下を現状の shellscript に追加(別のファイルとしても作ります)
echo "[workspace]
members = [
    \"ABC/\/*\"
]" > Cargo.toml;
  • members を制限する理由としては無駄に rust-analyzer の範囲を広げないようにしたかったから

まとめ

  • まだ若干不便な感じはするがいいフォルダ構成が思いつかない
  • cargo run でどうにかしたいため main.rs の名前を変えたりするのは嫌だった
  • 特定のディレクトリのみで反応する alias みたいなのを張って main_263_a みたいな感じにするのもありだったかもしれない
  • ちなみに色は茶色(ごくごくまれに D が解ける程度)の雑魚です

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA