1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

今年は2024年。そう、3年に一度のRustのeditionが新しく設定される年である。
このeditionとは何かについて解説する。

edtionとは?

Rustには、ほかの言語と同じようにバージョンがある。
一般的にバージョンは、コンパイラだったり、標準ライブラリだったり、パッケージマネージャが発展するにつれて上がっていくものである。
だが、ほかの言語でこんな覚えはないだろうか?
言語のバージョンが上がった時に後方互換性が切れて移行作業が大変だったりとか。
一部のライブラリは新しいバージョンでコンパイルできるが、一部はできなかったりとか。
この機能は欲しいが、この互換性がきれるとこまるとか。

Rustは、少なくとも公式のツールにおいては、後方互換性を非常に大事にしている。
だがしかし、言語とライブラリの発展のなかで後方互換性のせいで、発展が止まってしまうことがある。
これを解消するために、editionというものが導入されている。

Rustのバージョンは、6週間に一回、マイナーバージョンが上がっていくようになっている。
このバージョンでは破壊的変更を(ほとんど)含まない変更で、コンパイラとライブラリに新しい機能が追加されていく。
では破壊的変更いれたいときにどうするかというとeditonを分けるのである。

コンパイラの挙動や、標準ライブラリなどの変更を新しいedition側だけにいれ、古いeditionで動くコードはそのままの状態になる。これによって破壊的変更を防いでいる。
edition側に破壊的変更がふくまれているので、バージョンを上げてもコンパイルエラーになにくい。
また、crateごとにeditionが指定されているので、依存先のcrateが新しいeditionに対応しないからといって、
自分のeditionがあげられないということは起きない。

またeditionの移行時にはツールが提供される。cargo fixを用いることで機械的に移行対応の修正をすることができるようになっている。

どう設定するか

Cargo.tomlにあるeditionの値が反映される

[package]
name = "sample-crate"
version = "0.1.0"
edition = "2021" # ここがeditionの値
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?