Dev ContainersでnightlyのRustを使う

Dev ContainersでRustのnightlyを使うために試したことのメモ。

環境

  • rustup: 1.26.0
  • rustc: 1.71.0-nightly
  • vscode: 1.79.0

試したこと

どちらでもrustのnightlyを使うようにはできるが、rust-analyzer等のVS Codeの拡張周りの設定が面倒なので、2の方法のほうが楽。

1. nightlyのイメージを使う

devcontainer.jsonで以下のようにRust nightlyのイメージを指定する。

{
  "image": "rustlang/rust:nightly-bullseye"
}

rust-analyzerが入っていないので自力で入れる必要あり。

2. onCreateCommandでnightlyを指定する

devcontainer.jsonのonCreateCommandでコンテナ作成後にrustupでnightlyをdefaultに指定する。

{
  "onCreateCommand": "rustup default nightly"
}

3. rust-toolchain.tomlでnightlyを指定する

プロジェクトルートにrust-toolchain.tomlを作成し、nightlyを指定する。

[toolchain]
channel = "nightly"

結局、これが一番簡単かもしれない。

だめだった方法

4. featuresでnightlyを指定する

devcontainer.jsonのfeaturesでrustのバージョンを指定する。

{
  "features": {
    "ghcr.io/devcontainers/features/rust:1": {
      "version": "nightly-2023-04-29"
    }
  }
}

README.mdを読む限りはうまくいきそうだがだめだった。