Rust 1.85 Released: Overview of Key Innovations and Improvements

Online Python Trainer for Beginners

Learn Python easily without overwhelming theory. Solve practical tasks with automatic checking, get hints in Russian, and write code directly in your browser — no installation required.

Start Course

Rust 1.85 Released: What Changed in the New Release



The Rust development team has presented another stable update of the language — version 1.85. This release brings a number of long-awaited features that simplify writing asynchronous code, improve performance, and expand the developer toolkit. Let's look at the key changes.



Stabilization of async closures

One of the main events was the stabilization of async closures — closures that can be asynchronous. Previously, to return an async closure, you had to manually write complex signatures with impl Future. Now the compiler supports the syntax:

  • async || { ... } — direct declaration of an async closure.
  • Automatic variable capture with lifetime support.
  • Compatibility with the FnOnce, FnMut, and Fn traits.

This simplifies writing asynchronous event handlers, middleware, and callback functions in web frameworks (e.g., Axum or Actix).



Improved borrow checker

In Rust 1.85, the borrow analyzer has been significantly improved. It now better understands cases where a variable is used after a partial move:

  • It is allowed to borrow individual fields of a struct, even if other fields have already been moved.
  • Improved handling of nested borrows in iterators.
  • Reduced number of false warnings in code with conditional constructs.

This is especially useful when working with large data structures that require partial ownership.



New macro capabilities

The release includes an expansion of the macro system (proc macros):

  • Added support for token streams with the ability to modify positions in the source code.
  • Simplified creation of attribute macros for structs and enums.
  • Improved error handling inside macros — messages are now displayed with an exact line reference in the user's code.

This will make the development of libraries for serialization (serde), web routing, and code generation more flexible.



Compiler optimization and cargo improvements

The developers continued work on compilation performance:

  • Incremental compilation for large projects has been accelerated (up to 15% faster).
  • Added support for parallel dependency analysis in cargo check.
  • Improved caching of intermediate artifacts in cargo build.

Also, a new command cargo info has appeared in cargo, which shows detailed information about a package from the registry (versions, dependencies, license) without needing to download it.



Security fixes and stability

Version 1.85 closes several vulnerabilities related to handling unsafe code. Memory handling bugs when using std::mem::transmute and MaybeUninit have been fixed. The Rust team recommends that all users update to ensure project security.



How to update

The update is available through the official rustup installer. To install the new version, run the command:

Recommended Libraries