---
created: 2026-02-18
origin: null
similar-to: null
---
# The Language Within
| Metadata | |
|:-----------------|---------------------------------------------------------------------------------------------------|
| Short title | The Language Within |
| What and why | Stabilize "implied language features" and remove unexpected edge cases |
| Point of contact | @lcnr |
| Application area | Network services |
| Application area | Systems & embedded |
| Application area | Safety-critical & regulated |
## Summary
There are a lot of unstable features in Rust whose stabilization will simplify the language instead of making it more involved. There are also extensions to the underlying type system which are necessary to remove incorrect errors and unsoundnesses[^1]. They often present themselves as unexpected sharp-edges where there isn't a clear difference between what works and what does not.
Such improvements are useful by themselves, but potentially even more importantly, they enable users to have a better mental model of Rust, making Rust more expressive while lowering the learning curve. These features should make you go "oh, I thought this already existed" or whose already stabilized subset feels unnecessarily limiting.
[^1]: see [Project Zero]
[Project Zero]: TODO
## ????
- Const generics: `feature(min_const_generics)` has been stabilized in 2021.
- generic expressions and associated constants are not allowed as const arguments yet -> MGCA
- the only allowed types are integers char and `bool` -> ADT const params
- Generic associated types have been stabilized in 2022
- Higher-ranked trait bounds involving add unnecessary `'static` requirements, preventing many otherwise desirable abstractions -> assumptions on binders
- Traits with GATs are not object safe: also blocked on assumptions on binders
- Polonius: random borrowck errors aren't nice
- TAIT and other `impl Trait` limitations: return-position `impl Trait` has been stabilized since XXXX, we've intended to rather quickly extend `impl Trait` to also work in type aliases, ended up being blocked on next-trait solver -> TAIT/RTN project goal
- incorrect errors with coroutine witnesses/higher-ranked trait bounds: just painful, higher ranked stuff has implied bounds until it hasn't -> assumptions on binders
- const traits: const-fn exists since forever, why no traits
- inherent associated types: inherent associated consts exists, associated types in traits exist :<
- associated type defaults
- generic free const items: generic type aliases exist, can already get them by using associated constants
- better support for late-bound generic parameters on functions
- the never type
- associated constants in dyn compatible traits
## 2026 goals
(((ROADMAP GOALS: The Language Within)))