▲ | kkert 9 hours ago | ||||||||||||||||
This is interesting because i'm writing quite a bit of embedded Rust, and i always run into limitations of very barebones const generics. I always wish they'd have half the expressiveness of C++ constexpr and templates. Win some, lose some though, as the overall development workflow is lightyears ahead of C++, mostly due to tooling | |||||||||||||||||
▲ | zozbot234 3 hours ago | parent | next [-] | ||||||||||||||||
Rust generics are not intended as a one-to-one replacement for C++ templates. Most complex cases of template-level programming would be addressed with macros (possibly proc macros) in Rust. | |||||||||||||||||
| |||||||||||||||||
▲ | badmintonbaseba 5 hours ago | parent | prev | next [-] | ||||||||||||||||
The expressiveness of const generics (NTTPs) in C++ wouldn't go away if it adopted lifetime annotations and "safe" scopes. It's entirely orthogonal. Rust decided to have more restrictive generic programming, with the benefit of early diagnostic of mistakes in generic code. C++ defers that detection to instantiation, which allows the generics to be more expressive, but it's a tradeoff. But this is an entirely different design decision to lifetime tracking. | |||||||||||||||||
▲ | afdbcreid 7 hours ago | parent | prev [-] | ||||||||||||||||
That's actually quite interesting because this is not an inherent limitation of Rust, and it is definitely planned to be improved. And AFAIK, today (as opposed to last years) it is even being actively worked on! |