Rust 1.85 has officially landed, bringing with it a suite of long-anticipated improvements to the language known for its blend of performance, safety, and developer-friendly features. Chief among the highlights is the stabilization of async closures, a major step forward for asynchronous programming in Rust. Released on February 20, Rust 1.85 is now available for download on GitHub. Developers who already use Rust via rustup can upgrade effortlessly by running rustup update stable
.
Async closures stand out as a particularly impactful addition in this release. Functioning much like async fn
blocks, these closures have the ability to capture values from their surrounding environment while returning Future
objects. This enhancement closes a longstanding gap in Rust’s async ecosystem, allowing developers to write more expressive and concise asynchronous code. The feature addresses critical limitations in earlier versions of Rust, such as difficulties with higher-ranked async function signatures and the inability for closures to return futures that borrow from captured variables.
Beyond async closures, Rust 1.85 introduces several quality-of-life improvements for both library authors and everyday users. One such addition is the new #[diagnostic::do_not_recommend]
attribute, which lets developers suppress certain trait implementations from appearing in compiler diagnostics—helping avoid potentially confusing or misleading suggestions. The release also retires the unstable compiler flag -Zpolymorphize
and includes a minor but helpful change to panic paths in the standard library, now consistently prefixed with /library
for clearer context.
Rounding out the release are a series of API stabilizations and tuple-related enhancements. Features like BuildHasherDefault::new
, ptr::fn_addr_eq
, and Unsigned{integer}::midpoint
are now stable, and support for tuple extensions has expanded. Earlier Rust versions introduced support for traits like Extend
and FromIterator
for 2-element tuples; Rust 1.85 extends this capability up to 12-element tuples, significantly boosting the ergonomics of handling structured iterable data. With the concurrent stabilization of the Rust 2024 edition, the language marks its largest evolutionary step yet, offering opt-in changes designed to modernize the ecosystem without breaking backward compatibility.