⚙️

RustでAtCoderやる時のRustのバージョン/editionの設定防備録

2022/04/24に公開

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. 1.42.0 をインストール

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