以下の内容はhttps://aznhe21.hatenablog.com/entry/2025/09/19/rust-1.90より取得しました。


Rust 1.90を早めに深掘り

本日9/19(金)にリリースされたRust 1.90の変更点を詳しく紹介します。 もしこの記事が参考になれば記事末尾から活動を支援頂けると嬉しいです。

この記事は原文の理解や和訳のために一部生成AIを使用していますが、すべて筆者の考えに基づく文章で構成しており、 漫然と生成AIを使用しているものではありません。

ピックアップ

個人的に注目する変更点を「ピックアップ」としてまとめました。 全ての変更点を網羅したリストは変更点リストをご覧ください。

x64のLinuxでリンクが高速になった

x86_64-unknown-linux-gnu環境では既定(BFD)のリンカーの代わりにLLVMのlldが使われるようになり、リンクが高速になりました。 Rustのコンパイルはリンクが長いので少しでも早くなるのは嬉しいですね。

この切り替えにより問題が発生した場合は(RUSTFLAGSなどを通して)コンパイラ-C linker-features=-lldを指定することで、 これまで同様既定のリンカーが使われるようになります。

ちなみに、これまで約1年の間Nightlyではテストとしてlldが使われていました。ここで大きな問題がなかったことで今回本採用に至ったようです。 [moldを使う]ことでさらに早くなる可能性もありますが、まだ提案段階のようです。

安定化されたAPIのドキュメント

安定化されたAPIのドキュメントを独自に訳して紹介します。リストだけ見たい方は安定化されたAPIをご覧ください。

u{n}::checked_sub_signed

原典

impl usize {
    #[stable(feature = "mixed_integer_ops_unsigned_sub", since = "1.90.0")]
    #[rustc_const_stable(feature = "mixed_integer_ops_unsigned_sub", since = "1.90.0")]
    #[must_use = "this returns the result of the operation, \
                  without modifying the original"]
    #[inline]
    pub const fn checked_sub_signed(self, rhs: isize) -> Option<Self>
    { /* 実装は省略 */ }
}

符号付き整数と検査付きの引き算を行う。 self - rhsを計算し、オーバーフローが起きた場合はNoneを返す。

サンプル

assert_eq!(1usize.checked_sub_signed(2), None);
assert_eq!(1usize.checked_sub_signed(-2), Some(3));
assert_eq!((usize::MAX - 2).checked_sub_signed(-4), None);

u{n}::overflowing_sub_signed

原典

impl usize {
    #[stable(feature = "mixed_integer_ops_unsigned_sub", since = "1.90.0")]
    #[rustc_const_stable(feature = "mixed_integer_ops_unsigned_sub", since = "1.90.0")]
    #[must_use = "this returns the result of the operation, \
                  without modifying the original"]
    #[inline]
    pub const fn overflowing_sub_signed(self, rhs: $SignedT) -> (Self, bool)
    { /* 実装は省略 */ }
}

符号付きのrhsを使い、self - rhsを計算する。

算術にオーバーフローが発生したかどうかを示す真偽値と共に減算結果をタプルで返す。 オーバーフローが起きた場合は回り込んだ値が返される。

サンプル

assert_eq!(1usize.overflowing_sub_signed(2), (usize::MAX, true));
assert_eq!(1usize.overflowing_sub_signed(-2), (3, false));
assert_eq!((usize::MAX - 2).overflowing_sub_signed(-4), (1, true));

u{n}::saturating_sub_signed

原典

impl usize {
    #[stable(feature = "mixed_integer_ops_unsigned_sub", since = "1.90.0")]
    #[rustc_const_stable(feature = "mixed_integer_ops_unsigned_sub", since = "1.90.0")]
    #[must_use = "this returns the result of the operation, \
                  without modifying the original"]
    #[inline]
    pub const fn saturating_sub_signed(self, rhs: $SignedT) -> Self
    { /* 実装は省略 */ }
}

符号付き整数と飽和する引き算を行う。 self - rhsを計算し、数値の境界ではオーバーフローではなく飽和を起こす。

サンプル

assert_eq!(1usize.saturating_sub_signed(2), 0);
assert_eq!(1usize.saturating_sub_signed(-2), 3);
assert_eq!((usize::MAX - 2).saturating_sub_signed(-4), usize::MAX);

u{n}::wrapping_sub_signed

原典

impl usize {
    #[stable(feature = "mixed_integer_ops_unsigned_sub", since = "1.90.0")]
    #[rustc_const_stable(feature = "mixed_integer_ops_unsigned_sub", since = "1.90.0")]
    #[must_use = "this returns the result of the operation, \
                  without modifying the original"]
    #[inline]
    pub const fn wrapping_sub_signed(self, rhs: $SignedT) -> Self
    { /* 実装は省略 */ }
}

符号付き整数と折り返す(合同、modular)引き算を行う。 self - rhsを計算し、型の境界で回り込み(wrap around)が起きる。

サンプル

assert_eq!(1usize.wrapping_sub_signed(2), usize::MAX);
assert_eq!(1usize.wrapping_sub_signed(-2), 3);
assert_eq!((usize::MAX - 2).wrapping_sub_signed(-4), 1);

変更点リスト

言語

コンパイラ

プラットフォーム対応

Rustのティア付けされたプラットフォーム対応の詳細はPlatform Supportのページ(※訳注:英語)を参照

ライブラリ

安定化されたAPI

以下のAPIが定数文脈で使えるようになった。

Cargo

Rustdoc

互換性メモ

関連リンク

さいごに

次のリリースのRust 1.91は10/31(金)にリリースされる予定です。 Rust 1.91ではIterator::chainiter::chainとして使えるようになるほか、 TypeIdを定数として取得できるようになる予定です。

ライセンス表記

  • この記事はApache 2/MITのデュアルライセンスで公開されている公式リリースノート及びドキュメントから翻訳・追記をしています
  • 冒頭の画像中にはRust公式サイトで配布されているロゴを使用しており、 このロゴはRust財団によってCC-BYの下で配布されています
  • 冒頭の画像はいらすとやさんの画像を使っています。いつもありがとうございます



以上の内容はhttps://aznhe21.hatenablog.com/entry/2025/09/19/rust-1.90より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14