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
⚠️ 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 argumentsBreaking 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
- 1If you rely on command-line arguments being embedded in PDBs for debugging, you may need to adjust your debugging workflow due to their removal.
- 2If 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`.
- 3Review 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