⚙️
RustでAtCoderやる時のRustのバージョン/editionの設定防備録
Atcoderは 2022年4月24日次点で Rust 1.42.0 のみをサポートしているようです.
しかし少し前に Rust 1.60 が出ましたし、最近は edition 2021 をCargo.tomlに書いたプロジェクトばかり使っているので、うっかりCE(Compile Error)食らってしまいました。
具体的に出してしまったエラーはこのへんです。
- 32要素以上の配列の初期化失敗
stuct X { tables: [MyStruct; N] // N は 32より大きい数字 }
-
for n in array.iter() {
ではなく、iter化せずに直接for n in array() {
しているところでエラー
気を取り直して次回から気をつけたいところです。
1.42.0
をインストール
やること1. rustup install 1.42.0
やること2. つかっているCargoプロジェクトで1.42.0を指定
Cargo.toml があるディレクトリで
echo 1.42.0 > rust-toolchain
やること3. edition を 2018とかに指定
もともと 2021 edition が指定されていたプロジェクトで、後から rust-toolchain ファイルによる設定を行ったところ、cargo build 時に以下のエラーがでました
Caused by:
failed to parse the `edition` key
Caused by:
supported edition values are `2015` or `2018`, but `2021` is unknown
1.42.0 は 2021 edition では使えないっぽいですね。
Cargo.toml を直接編集して edition = "2018" にしたところ、1.42.0 でのcargo build が実行できました。
[package]
- edition = "2021"
+ edition = "2018"
Discussion