Change8

Migrating to Rust Language 1.92.0

Version 1.92.0 introduces 5 breaking changes. This guide details how to update your code.

Released: 12/11/2025

5
Breaking Changes
3
Migration Steps
33
Affected Symbols

⚠️ Check Your Code

If you use any of these symbols, you need to read this guide:

MaybeUninitunion field access#[track_caller]#[no_mangle]never_type_fallback_flowing_into_unsafedependency_on_unit_never_type_fallbackunused_must_useResult<(), !>ControlFlow<Uninhabited, ()>mips64el-unknown-linux-muslabi64Iterator::eq{_by}TrustedLenExtend for tuplesEncodeWideiter::Repeat::lastiter::Repeat::countNonZero<u{N}>::div_ceilLocation::file_as_c_strRwLockWriteGuard::downgradeBox::new_zeroedBox::new_zeroed_sliceRc::new_zeroedRc::new_zeroed_sliceArc::new_zeroedArc::new_zeroed_slicebtree_map::Entry::insert_entrybtree_map::VacantEntry::insert_entryproc_macro::TokenStream<[_]>::rotate_left<[_]>::rotate_rightPin<LocalType>::DerefMutpin! macro argumentsformatting macros arguments

Breaking Changes

Issue #1

The `unused_must_use` lint no longer warns on `Result<(), Uninhabited>` (e.g., `Result<(), !>`), or `ControlFlow<Uninhabited, ()>`. This means code previously warned about for using these types in contexts requiring a `MustUse` result might stop warning.

Solution

No fix required unless you specifically relied on this lint warning for these never-type error cases.

Issue #2

The code for embedding command-line arguments in PDB debug info has been removed.

Solution

If debugging tools relied on command-line arguments being present in PDBs, they will no longer be there. This change was made because the code caused problems for incremental builds.

Issue #3

The `iter::Repeat::last` and `count` methods will now panic instead of looping infinitely when used.

Solution

Ensure that iterators created via `iter::Repeat` are not expected to yield an infinite sequence if `last()` or `count()` is called.

Issue #4

The future-compatibility lint `invalid_macro_export_arguments` is upgraded to deny-by-default and will now be reported in dependencies.

Solution

Address any warnings related to `invalid_macro_export_arguments` in your code or dependencies, as they will now cause compilation failures.

Issue #5

Downstream implementations of `DerefMut` for `Pin<LocalType>` are prevented.

Solution

If you had a downstream crate implementing `DerefMut` for `Pin<LocalType>`, this implementation will no longer compile/work.

Migration Steps

  1. 1
    If you rely on command-line arguments being embedded in PDBs for debugging, you may need to adjust your debugging workflow due to their removal.
  2. 2
    If you build with `-C panic=abort` on Linux and require backtraces, the default behavior now includes unwind tables. If you explicitly want to omit them, build with `-C force-unwind-tables=no`.
  3. 3
    Review code for the `invalid_macro_export_arguments` lint, as it is now deny-by-default and applies to dependencies.

Release Summary

This release introduces several new stabilized APIs, including zeroed allocation methods for Box, Rc, and Arc, and improvements to iterator handling and compiler diagnostics. It also updates the minimum required LLVM version and fixes a panic issue in `Repeat::last`/`count`.

Need More Details?

View the full release notes and all changes for Rust Language 1.92.0.

View Full Changelog