Rustチームは2026年3月5日、プログラミング言語Rustの最新バージョンである1.94.0のリリースを発表しました。
Rustは、効率性と信頼性の高いソフトウェア開発を誰もが実現できるように設計された言語です。
今回のアップデートでは、スライス操作の利便性を高める新メソッドの導入や、ビルドツールであるCargoの構成管理における柔軟性の向上など、開発体験をさらに洗練させる機能が数多く含まれています。
すでにrustupを使用して以前のバージョンをインストールしている場合は、ターミナルでrustup update stableコマンドを実行するだけで、最新の1.94.0環境を手に入れることができます。
スライス操作を強力にする array_windows の導入
Rust 1.94.0における最も注目すべき変更の一つは、スライスに対して利用可能なイテレータメソッドarray_windowsの安定化です。
これまでもRustには、指定したウィンドウサイズでスライスをスライドさせながら参照を返すwindowsメソッドが存在していました。
しかし、従来のメソッドには戻り値が動的なサイズを持つスライス(&[T])であるという制約がありました。
定数長配列によるイテレーションのメリット
新しく追加されたarray_windowsは、イテレータの各要素として定数長の配列への参照(&[T; N])を返します。
これにより、コンパイル時にウィンドウのサイズが確定するため、要素を取り出す際のインデックス指定において境界チェックを省略できる可能性が高まり、パフォーマンスの最適化が期待できます。
また、配列のデストラクト(構造分解)を利用した直感的なパターンマッチングが可能になる点も大きなメリットです。
実践的なコード例:パターンマッチングへの活用
例えば、特定のパターン(例:ABBAパターン)を文字列中から探す処理を記述する場合、以下のように非常に簡潔に記述できるようになります。
fn has_abba(s: &str) -> bool {
// 文字列をバイトスライスとして扱い、4要素のウィンドウでスキャンする
s.as_bytes()
.array_windows()
.any(|[a1, b1, b2, a2]| {
// パターン [a, b, b, a] かつ a != b であるかを確認
(a1 != b1) && (a1 == a2) && (b1 == b2)
})
}
fn main() {
let text = "xyyx_test_abba";
if has_abba(text) {
println!("ABBAパターンが見つかりました!");
}
}
このコードでは、クロージャの引数部分で[a1, b1, b2, a2]という配列のパターンを使用しています。
コンパイラはこのパターンから、ウィンドウサイズが4であることを自動的に推論します。
従来のwindows(4)メソッドでは、各要素がスライスとして渡されるため、手動でインデックスを指定するか、スライスから配列への変換を試みる必要がありました。
Cargo設定の柔軟性を高める設定ファイルのインクルード機能
パッケージマネージャ兼ビルドツールのCargoにおいて、構成ファイル(.cargo/config.toml)の管理方法が劇的に改善されました。
新しいincludeキーを使用することで、外部のTOMLファイルを現在の設定に読み込めるようになります。
階層化された設定管理
この機能により、プロジェクト間で共通の設定を共有したり、特定の開発環境専用の設定を分離して管理したりすることが容易になります。
例えば、チームで共有する標準設定と、個々の開発者がローカルで使用する任意の設定を分けるといった運用が可能です。
# .cargo/config.toml の記述例
# 配列形式で複数のファイルを読み込む
include = [
"common_settings.toml",
"project_specific.toml",
]
# インラインテーブル形式を使用して詳細な制御を行う
include = [
{ path = "required_config.toml" },
{ path = "optional_local.toml", optional = true }, # ファイルが存在しなくてもエラーにしない
]
optional = trueを指定することで、特定の開発者にのみ必要なツール設定や、特定のビルドマシンにしか存在しないパス設定などをエラーを出すことなく柔軟に取り込むことが可能になります。
TOML 1.1 への対応とマニフェスト記述の改善
Cargoのパーサーが更新され、TOML v1.1がサポートされました。
これにより、Cargo.tomlや各種設定ファイルの記述において、より柔軟な構文が利用可能になります。
読みやすさを向上させる複数行インラインテーブル
TOML 1.1の導入による最も視覚的な変化は、インラインテーブルの改行許可です。
これまでは、依存関係の記述などでインラインテーブルが長くなっても1行で書く必要がありましたが、今後は以下のように複数行に分けて記述できます。
# 新しい形式での依存関係記述
serde = {
version = "1.0",
features = ["derive"],
}
末尾のカンマも許容されるため、要素の追加や削除が容易になり、差分(diff)の確認もしやすくなります。
ただし、これらの新機能を使用した場合、プロジェクトの最小サポートRustバージョン(MSRV)が1.94.0以降になる点には注意が必要です。
なお、Cargoはパッケージ公開時にマニフェストを古いパーサーでも読み取れる形式に自動変換するため、ライブラリの利用者に古いRust環境が含まれていても、基本的には問題なく配布を継続できます。
安定化された主要なAPI
Rust 1.94.0では、多くのAPIが安定版として利用可能になりました。
これにより、サードパーティのクレートに依存することなく、標準ライブラリだけで完結できる処理が増えています。
Lazy型の標準化とSIMD、数学定数の拡充
特に重要なのは、遅延初期化を実現するLazyCellおよびLazyLock関連のメソッドの充実です。
これにより、グローバル変数や構造体のフィールドにおける「必要になったタイミングでの一度限りの初期化」が、安全かつ標準的な方法で記述できるようになりました。
| カテゴリ | 安定化された主なAPI |
|---|---|
| スライス操作 | array_windows, element_offset |
| 遅延初期化 | LazyCell::get, LazyLock::get など |
| イテレータ | Peekable::next_if_map |
| 数学定数 | f32::consts::EULER_GAMMA, GOLDEN_RATIO |
また、x86のavx512fp16やAArch64のNEON fp16といったハードウェア固有のイントリンジック(組み込み関数)も多数安定化されました。
これにより、低レイヤの最適化が必要な数値計算や画像処理においても、Rustの能力を最大限に引き出すことができます。
さらに、これまで動的なコンテキストでしか利用できなかったf32::mul_addおよびf64::mul_addが、constコンテキストでも使用可能になりました。
コンパイル時の定数計算において、より精度の高い積和演算が行えるようになっています。
まとめ
Rust 1.94.0は、「安全性と表現力の両立」をさらに一歩進めたリリースと言えます。
array_windowsによる強力なパターンマッチング、Cargoの設定ファイルインクルードによる管理の効率化、そしてTOML 1.1対応によるコードの可読性向上など、日々の開発において恩恵を感じる機能が揃っています。
特に大規模なプロジェクトやチーム開発においては、Cargoの新しい設定管理手法を導入することで、ビルド環境のポータビリティが大きく向上するでしょう。
標準ライブラリの拡充も続いており、Rustエコシステム全体の堅牢さがますます高まっています。
2026年のRust開発をさらに加速させるこの新バージョンを、ぜひお手元の環境で試してみてください。
