鴨川のはりねずみ

Rust edition 2024に向けてrand::Rng::genが改名される模様

Rust edition 2024 は 2025年2月20日にリリースされる予定の Rust 1.85 と同時にリリースされる見通しです.

Edition 2024 には過去の edition と同様にいくつかの破壊的な変更が含まれる予定です. 言うまでもなく後方互換性には配慮されており, 明示的に edition を上げない限り, 既存のコードは edition 2021 ないしそれ以前の edition のコードとして処理されるので, 過去の Rust コードが何もしていないのに動かなくなることはありません.

Edition 2024 での変更点の中で個人的に影響が大きいのが, gen がキーワードとして予約されるというものです.

この結果, gen という識別子を含むコードをそのまま edition 2024 に切り替えるとコンパイルに失敗すると思われます. 最小限の修正で済ませるには, 既存の識別子 genraw identifier と呼ばれる形 r#gen に置き換えれば, キーワードではない識別子 gen として解釈されるので OK です. 詳細は上記 Edition Guide をご覧ください. これはコマンド

cargo fix --edition

により自動的に実行できます.

問題は, gen という識別子が rand クレートという使用頻度の高いクレートの基本的なメソッド名 (Rng::gen) として採用されていることです. 次の issue

での議論により, Rng::genRng::random に改名されることになりました. この名称は rand::random 関数とも整合的です. なお Rng::gen は一応非推奨 (deprecated) として残されるようです (commit).

この変更は rand 0.9 にて反映される予定です.

早く rand 1.0 にならないかな~と思っていたのですが, まさかこんな変更が必要になるとは.