# Latest

**URL:** https://internals.rust-lang.org/latest.md

[Latest](https://internals.rust-lang.org/latest.md) · [Categories](https://internals.rust-lang.org/categories.md)

---

## [Welcome to the Rust Programming Language Internals Forum](https://internals.rust-lang.org/t/welcome-to-the-rust-programming-language-internals-forum/6)

<div class="topic-metadata">

**Author:** [@system](https://internals.rust-lang.org/u/system)\
**Replies:** 0\
**Last updated:** [June 25, 2014, 2:47pm UTC](https://internals.rust-lang.org/t/welcome-to-the-rust-programming-language-internals-forum/6 "2014-06-25T14:47:32Z")

</div>

Here is the hub for discussing everything related to the implementation and design of the Rust programming language. This is not a support forum. Questions or requests for support using Rust should be directed to the us…

---

## [pre-RFC: LTS for the Rust Toolchain](https://internals.rust-lang.org/t/pre-rfc-lts-for-the-rust-toolchain/24476)

<div class="topic-metadata">

**Author:** [@CAD97](https://internals.rust-lang.org/u/CAD97)\
**Replies:** 129\
**Last updated:** [September 23, 2026, 12:40am UTC](https://internals.rust-lang.org/t/pre-rfc-lts-for-the-rust-toolchain/24476 "2026-09-23T00:40:39Z")

</div>

Disclaimer: I am proposing this as part of my employment at Canonical\[1\]. I am representing an interest of Canonical, but I am not representing Canonical itself. ▶ Intended Improvements I'm very aware of the volume of dis…

---

## [How to do an in-place mapping of values in containers from a T to a newtype wrapper of T?](https://internals.rust-lang.org/t/how-to-do-an-in-place-mapping-of-values-in-containers-from-a-t-to-a-newtype-wrapper-of-t/24607)

<div class="topic-metadata">

**Author:** [@Sawyer47](https://internals.rust-lang.org/u/Sawyer47)\
**Replies:** 23\
**Last updated:** [September 22, 2026, 11:35am UTC](https://internals.rust-lang.org/t/how-to-do-an-in-place-mapping-of-values-in-containers-from-a-t-to-a-newtype-wrapper-of-t/24607 "2026-09-22T11:35:38Z")

</div>

Hi! I wonder how to map a container in-place from type T to a repr(transparent) wrapper of T that establishes some invariant - purely as an optimization so that I do not need to rewrite the entire container into a new …

---

## [Does rust abstract file operations incorrectly?](https://internals.rust-lang.org/t/does-rust-abstract-file-operations-incorrectly/24560)

<div class="topic-metadata">

**Author:** [@Hummmmmmmmus](https://internals.rust-lang.org/u/Hummmmmmmmus)\
**Replies:** 80\
**Last updated:** [September 21, 2026, 7:31pm UTC](https://internals.rust-lang.org/t/does-rust-abstract-file-operations-incorrectly/24560 "2026-09-21T19:31:11Z")

</div>

Introduction I recently got into building a wayland client in rust on linux to get a feel for both linux windowing and rust IPC. I ended up getting stuck on step #1 which was to open a unix socket to a wayland compositor…

---

## [Nudging users off 2015 edition](https://internals.rust-lang.org/t/nudging-users-off-2015-edition/24559)

<div class="topic-metadata">

**Author:** [@kornel](https://internals.rust-lang.org/u/kornel)\
**Replies:** 41\
**Last updated:** [September 20, 2026, 6:05pm UTC](https://internals.rust-lang.org/t/nudging-users-off-2015-edition/24559 "2026-09-20T18:05:04Z")

</div>

There are real costs to having 2015-edition Rust source code, and arguably no benefits. I think rustc and Cargo should start warning about crates still using the 2015 edition and encourage moving to a newer edition. u…

---

## [AI skills based on official guidelines](https://internals.rust-lang.org/t/ai-skills-based-on-official-guidelines/24566)

<div class="topic-metadata">

**Author:** [@MusicalNinjaDad](https://internals.rust-lang.org/u/MusicalNinjaDad)\
**Replies:** 21\
**Last updated:** [September 20, 2026, 12:49pm UTC](https://internals.rust-lang.org/t/ai-skills-based-on-official-guidelines/24566 "2026-09-20T12:49:04Z")

</div>

One of rust's (many) outstanding features as a language is the quality of the documentation. Not just the library docs, the books, the reference but also the various guidelines. While much can be deterministically check…

---

## [Aliasing-xor-mutation WITHOUT borrow-checker](https://internals.rust-lang.org/t/aliasing-xor-mutation-without-borrow-checker/24596)

<div class="topic-metadata">

**Author:** [@F001](https://internals.rust-lang.org/u/F001)\
**Replies:** 20\
**Last updated:** [September 19, 2026, 9:15am UTC](https://internals.rust-lang.org/t/aliasing-xor-mutation-without-borrow-checker/24596 "2026-09-19T09:15:56Z")

</div>

Hi, Rust experts! I've been pondering a question for a long time: is the borrow checker the only solution for achieving "aliasing XOR mutation" ? After years of exploration, I personally feel there might be other solutio…

---

## [Make Vec and String be slices](https://internals.rust-lang.org/t/make-vec-and-string-be-slices/24540)

<div class="topic-metadata">

**Author:** [@daniel-pfeiffer](https://internals.rust-lang.org/u/daniel-pfeiffer)\
**Replies:** 15\
**Last updated:** [September 17, 2026, 11:00pm UTC](https://internals.rust-lang.org/t/make-vec-and-string-be-slices/24540 "2026-09-17T23:00:49Z")

</div>

IMHO Vecs and Strings are wasteful in storing the capacity along with the pointer and length. On 64bit systems this makes them to big to fit into u128 registers, where available. And on every move there is an extra usize…

---

## [Suggestion on implementation of floating-point computations with different rounding mode](https://internals.rust-lang.org/t/suggestion-on-implementation-of-floating-point-computations-with-different-rounding-mode/24594)

<div class="topic-metadata">

**Author:** [@azalea\_99](https://internals.rust-lang.org/u/azalea_99)\
**Replies:** 10\
**Last updated:** [September 15, 2026, 12:42pm UTC](https://internals.rust-lang.org/t/suggestion-on-implementation-of-floating-point-computations-with-different-rounding-mode/24594 "2026-09-15T12:42:43Z")

</div>

Hello everyone! Some FPUs support different rounding mode, so if the floating-point operation yields a value that cannot be represented exactly, it is rounded according to the rounding mode. As far as I understand, the …

---

## [Patched rustc to fix why editing one generic method recompiles all 200 instantiations](https://internals.rust-lang.org/t/patched-rustc-to-fix-why-editing-one-generic-method-recompiles-all-200-instantiations/24595)

<div class="topic-metadata">

**Author:** [@Trigodil](https://internals.rust-lang.org/u/Trigodil)\
**Replies:** 16\
**Last updated:** [September 14, 2026, 3:36pm UTC](https://internals.rust-lang.org/t/patched-rustc-to-fix-why-editing-one-generic-method-recompiles-all-200-instantiations/24595 "2026-09-14T15:36:56Z")

</div>

So I was getting annoyed by slow incremental builds and ended up digging into rustc\_monomorphize::partitioning in the compiler . Found something interesting - every monomorphization of a generic function gets pooled into…

---

## [Pre-RFC: global\_generic — crate-level type parameters](https://internals.rust-lang.org/t/pre-rfc-global-generic-crate-level-type-parameters/24589)

<div class="topic-metadata">

**Author:** [@hashim-not-found-404](https://internals.rust-lang.org/u/hashim-not-found-404)\
**Replies:** 9\
**Last updated:** [September 14, 2026, 11:59am UTC](https://internals.rust-lang.org/t/pre-rfc-global-generic-crate-level-type-parameters/24589 "2026-09-14T11:59:44Z")

</div>

Pre-RFC: global\_generic — crate-level type parameters Summary Add a global\_generic declaration that lets a crate expose a type parameter which is bound exactly once, in main.rs, and then used anywhere in the dependency g…

---

## [Safe unions and error types](https://internals.rust-lang.org/t/safe-unions-and-error-types/24597)

<div class="topic-metadata">

**Author:** [@alrz](https://internals.rust-lang.org/u/alrz)\
**Replies:** 1\
**Last updated:** [September 12, 2026, 8:04pm UTC](https://internals.rust-lang.org/t/safe-unions-and-error-types/24597 "2026-09-12T20:04:45Z")

</div>

Currently there's some workarounds to deal with multiple error types other than creating a sum type, like dyn or anyhow. The idea here is to make the compiler generate this sum type and allow transparent construction an…

---

## [Adding retain\_unsorted or similar](https://internals.rust-lang.org/t/adding-retain-unsorted-or-similar/24591)

<div class="topic-metadata">

**Author:** [@APT37](https://internals.rust-lang.org/u/APT37)\
**Replies:** 3\
**Last updated:** [September 11, 2026, 7:11pm UTC](https://internals.rust-lang.org/t/adding-retain-unsorted-or-similar/24591 "2026-09-11T19:11:44Z")

</div>

Just thought it was odd that there was no retain equivalent that uses swap\_remove under the hood. Why not add something like this? fn retain\_unordered\<T, F\>(vec: &mut Vec\<T\>, mut keep: F) where F: FnMut(&T) -\> bool,…

---

## [\#!\[restrict(unsafe, modules = "platform::win")\] (bikesheddable)](https://internals.rust-lang.org/t/restrict-unsafe-modules-platform-win-bikesheddable/24577)

<div class="topic-metadata">

**Author:** [@MusicalNinjaDad](https://internals.rust-lang.org/u/MusicalNinjaDad)\
**Replies:** 3\
**Last updated:** [September 11, 2026, 7:14am UTC](https://internals.rust-lang.org/t/restrict-unsafe-modules-platform-win-bikesheddable/24577 "2026-09-11T07:14:09Z")

</div>

I've recently found myself creating a library which includes some platform-specific ffi usage as well as some much higher-level functionality, which I'd really rather not split into 2 crates. This means I cannot #!\[forb…

---

## [Feature request: Stabilize \`NumBufferTrait\` to use as a bound](https://internals.rust-lang.org/t/feature-request-stabilize-numbuffertrait-to-use-as-a-bound/24581)

<div class="topic-metadata">

**Author:** [@tyilo](https://internals.rust-lang.org/u/tyilo)\
**Replies:** 6\
**Last updated:** [September 9, 2026, 1:26pm UTC](https://internals.rust-lang.org/t/feature-request-stabilize-numbuffertrait-to-use-as-a-bound/24581 "2026-09-09T13:26:34Z")

</div>

I would like to add the format\_into function to my Integer trait. This doesn't seem to be possible because of the T: NumBufferTrait bound in the definition of NumBuffer which requires me to add NumBufferTrait as a super…

---

## [\[generic\_const\_exprs\] Support for basic field access for structs and tuples](https://internals.rust-lang.org/t/generic-const-exprs-support-for-basic-field-access-for-structs-and-tuples/24584)

<div class="topic-metadata">

**Author:** [@blockmath](https://internals.rust-lang.org/u/blockmath)\
**Replies:** 1\
**Last updated:** [September 9, 2026, 11:17am UTC](https://internals.rust-lang.org/t/generic-const-exprs-support-for-basic-field-access-for-structs-and-tuples/24584 "2026-09-09T11:17:00Z")

</div>

The following situation happens often: I have a wrapper type around a multidimensional array. I want to make the type generic over the specific dimensions. I want to pack all dimensions into one parameter, so that larg…

---

## [In Which Code The Parsing Of Function Happen In Rustc?](https://internals.rust-lang.org/t/in-which-code-the-parsing-of-function-happen-in-rustc/24576)

<div class="topic-metadata">

**Author:** [@fuji-184](https://internals.rust-lang.org/u/fuji-184)\
**Replies:** 9\
**Last updated:** [September 5, 2026, 9:25pm UTC](https://internals.rust-lang.org/t/in-which-code-the-parsing-of-function-happen-in-rustc/24576 "2026-09-05T21:25:10Z")

</div>

Hello, I'm trying to experiment Rust with semicolon inference. For now, it can handle this, except the handling of call function that has return value at the last code of function that does not has return type isn't inse…

---

## [Generic statics within generic functions](https://internals.rust-lang.org/t/generic-statics-within-generic-functions/24575)

<div class="topic-metadata">

**Author:** [@jacobrgreen114](https://internals.rust-lang.org/u/jacobrgreen114)\
**Replies:** 20\
**Last updated:** [September 5, 2026, 5:09pm UTC](https://internals.rust-lang.org/t/generic-statics-within-generic-functions/24575 "2026-09-05T17:09:57Z")

</div>

First off, please forgive my ignorance towards the current implementation and limitations of the compiler. The following may or may not be reasonably feasible. I'm not currently advocating for global generic statics as …

---

## [Rust 1.98.1 pre-release testing](https://internals.rust-lang.org/t/rust-1-98-1-pre-release-testing/24573)

<div class="topic-metadata">

**Author:** [@system](https://internals.rust-lang.org/u/system)\
**Replies:** 1\
**Last updated:** [September 3, 2026, 4:55pm UTC](https://internals.rust-lang.org/t/rust-1-98-1-pre-release-testing/24573 "2026-09-03T16:55:33Z")

</div>

The 1.98.1 pre-release is ready for testing. The release is scheduled for September 3. Release notes can be found here. You can try it out locally by running: RUSTUP\_DIST\_SERVER=https://dev-static.rust-lang.org rustup …

---

## [\[Pre-pre-RFC\] "splatting" for named arguments and function overloading](https://internals.rust-lang.org/t/pre-pre-rfc-splatting-for-named-arguments-and-function-overloading/24012)

<div class="topic-metadata">

**Author:** [@Nadrieril](https://internals.rust-lang.org/u/Nadrieril)\
**Replies:** 44\
**Last updated:** [September 2, 2026, 10:10pm UTC](https://internals.rust-lang.org/t/pre-pre-rfc-splatting-for-named-arguments-and-function-overloading/24012 "2026-09-02T22:10:38Z")

</div>

While discussing C++ overloading on Zulip, a bunch of us (re?)discovered a pretty cute idea, which I'm taking the liberty to flesh out here. This RFC comes from the realization that "we have named arguments at home" a…

---

## [Non-Rust artifact dependencies for build scripts](https://internals.rust-lang.org/t/non-rust-artifact-dependencies-for-build-scripts/24555)

<div class="topic-metadata">

**Author:** [@guineawheek](https://internals.rust-lang.org/u/guineawheek)\
**Replies:** 14\
**Last updated:** [September 2, 2026, 12:32pm UTC](https://internals.rust-lang.org/t/non-rust-artifact-dependencies-for-build-scripts/24555 "2026-09-02T12:32:40Z")

</div>

As detailed in this larger piece surveying build.rs scripts, a lot of build.rs scripts that generate FFI bindings (and thus need to pull in external sources) or need to pull in external corpuses of information (e.g. NLP-…

---

## [Option\<NonNull\<T\>\>::as\_ptr](https://internals.rust-lang.org/t/option-nonnull-t-as-ptr/24563)

<div class="topic-metadata">

**Author:** [@wyfo](https://internals.rust-lang.org/u/wyfo)\
**Replies:** 2\
**Last updated:** [August 30, 2026, 9:01pm UTC](https://internals.rust-lang.org/t/option-nonnull-t-as-ptr/24563 "2026-08-30T21:01:26Z")

</div>

When working with raw pointers, using NonNull\<T\> and sometimes Option\<NonNull\<T\>\> can be more ergonomic. However, some APIs, e.g. AtomicPtr, requires raw pointers. NonNull has a as\_ptr method, but when it comes to Option\<…

---

## [Unsafe low-level mutex](https://internals.rust-lang.org/t/unsafe-low-level-mutex/24565)

<div class="topic-metadata">

**Author:** [@wyfo](https://internals.rust-lang.org/u/wyfo)\
**Replies:** 14\
**Last updated:** [August 30, 2026, 8:46pm UTC](https://internals.rust-lang.org/t/unsafe-low-level-mutex/24565 "2026-08-30T20:46:33Z")

</div>

When using a Mutex\<()\> in low-level unsafe code, keeping around the guard in order to unlock can be tedious/suboptimal (and poisoning can be useless and thus suboptimal in panic-free code). It's unfortunate because std …

---

## [Add maximum and minimum and other functions](https://internals.rust-lang.org/t/add-maximum-and-minimum-and-other-functions/24545)

<div class="topic-metadata">

**Author:** [@BennyLi](https://internals.rust-lang.org/u/BennyLi)\
**Replies:** 5\
**Last updated:** [August 29, 2026, 8:33am UTC](https://internals.rust-lang.org/t/add-maximum-and-minimum-and-other-functions/24545 "2026-08-29T08:33:01Z")

</div>

There should be a convenience way to get the maximum of an array or a set. Which would work like this. assert\_eq!(\[1,2,3\].maximum(), 3); assert\_eq!(\[1,2,3\].minimum(), 1);

---

## [How to disable cargo semver metadata warning?](https://internals.rust-lang.org/t/how-to-disable-cargo-semver-metadata-warning/24562)

<div class="topic-metadata">

**Author:** [@metasim](https://internals.rust-lang.org/u/metasim)\
**Replies:** 4\
**Last updated:** [August 28, 2026, 7:52pm UTC](https://internals.rust-lang.org/t/how-to-disable-cargo-semver-metadata-warning/24562 "2026-08-28T19:52:33Z")

</div>

For internal tracking purposes with a private registry, my company uses the + semver syntax on crate versions. It's effective for our use case, but every cargo build emits this sort of message: warning: my-crate/Cargo.…

---

## [Feature request: \`std::io::Sink\` should implement \`std::io::IsTerminal\` (returning \`false\`)](https://internals.rust-lang.org/t/feature-request-std-sink-should-implement-std-isterminal-returning-false/24561)

<div class="topic-metadata">

**Author:** [@gignico](https://internals.rust-lang.org/u/gignico)\
**Replies:** 2\
**Last updated:** [August 28, 2026, 4:02pm UTC](https://internals.rust-lang.org/t/feature-request-std-sink-should-implement-std-isterminal-returning-false/24561 "2026-08-28T16:02:35Z")

</div>

I have a tool which formats output and error messages on the terminal depending on the terminal size and therefore needs to query io::IsTerminal often. I have a trait RenderTarget: io::Write + io::IsTerminal which is use…

---

## [SAFETY documentation may be inconsistent with soundness verification specifications](https://internals.rust-lang.org/t/safety-documentation-may-be-inconsistent-with-soundness-verification-specifications/24539)

<div class="topic-metadata">

**Author:** [@Evian-Zhang](https://internals.rust-lang.org/u/Evian-Zhang)\
**Replies:** 80\
**Last updated:** [August 28, 2026, 2:04pm UTC](https://internals.rust-lang.org/t/safety-documentation-may-be-inconsistent-with-soundness-verification-specifications/24539 "2026-08-28T14:04:25Z")

</div>

I recently read about the concept of library-level invariants and language-level invariants. It happens to me that there may be some gaps between the SAFETY requirements and how verification community writes their specif…

---

## [Another approach to the nonzero macro](https://internals.rust-lang.org/t/another-approach-to-the-nonzero-macro/24549)

<div class="topic-metadata">

**Author:** [@TGODiamond](https://internals.rust-lang.org/u/TGODiamond)\
**Replies:** 10\
**Last updated:** [August 27, 2026, 12:55pm UTC](https://internals.rust-lang.org/t/another-approach-to-the-nonzero-macro/24549 "2026-08-27T12:55:47Z")

</div>

Initialization of a nonzero number, where assertion happens at compile time: // Using macro\_rules for performant compilation, tested to work in stable Rust #\[macro\_export\] macro\_rules! nonzero { ($n:expr) =\> { …

---

## [Build Security](https://internals.rust-lang.org/t/build-security/24166)

<div class="topic-metadata">

**Author:** [@daniel-pfeiffer](https://internals.rust-lang.org/u/daniel-pfeiffer)\
**Replies:** 31\
**Last updated:** [August 27, 2026, 12:32pm UTC](https://internals.rust-lang.org/t/build-security/24166 "2026-08-27T12:32:44Z")

</div>

Rust builds have two Trojan features. Here are thoughts about reigning them in: 1. Build.rs I recall that there was a discussion long ago that the most common tasks could be implemented centrally and activated by config…

---

## [Pre-RFC: defining globals in global\_asm!](https://internals.rust-lang.org/t/pre-rfc-defining-globals-in-global-asm/24558)

<div class="topic-metadata">

**Author:** [@alice](https://internals.rust-lang.org/u/alice)\
**Replies:** 1\
**Last updated:** [August 27, 2026, 8:03am UTC](https://internals.rust-lang.org/t/pre-rfc-defining-globals-in-global-asm/24558 "2026-08-27T08:03:32Z")

</div>

Rust's asm story currently has some big limitations related to defining globals from asm blocks. Specifically, there are two limitations: You have to pick the symbol name yourself. You cannot ask the compiler to pick a…

[Next page](https://internals.rust-lang.org/latest.md?page=1)
