現状
├── 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 が使えない
いったんの解決方法
- Cargo.toml をルートに追加
- 以下を現状の shellscript に追加(別のファイルとしても作ります)
echo "[workspace]
members = [
\"ABC/\/*\"
]" > Cargo.toml;
- members を制限する理由としては無駄に rust-analyzer の範囲を広げないようにしたかったから
まとめ
- まだ若干不便な感じはするがいいフォルダ構成が思いつかない
- cargo run でどうにかしたいため main.rs の名前を変えたりするのは嫌だった
- 特定のディレクトリのみで反応する alias みたいなのを張って main_263_a みたいな感じにするのもありだったかもしれない
- ちなみに色は茶色(ごくごくまれに D が解ける程度)の雑魚です