5 ms·
const generics are a feature I've been looking forward to since 1.0, really cool to see that work making it to stable. This solves another of the ergonomic iss
by staticassertion 6y ago
const generics are a feature I've been looking forward to since 1.0, really cool to see that work making it to stable.
This solves another of the ergonomic issues in Rust. It really feels like within 2021 Rust will hit a point where it feels totally consistent.
- est31 6y agoconst generics themselves will only become stable in the upcoming release, 1.51. This release only adds implementations of specific traits to arrays of all lengths. Users themselves can't declare types yet that are generic on numbers or write impl blocks generic on numbers.
- staticassertion 6y agoAh! Bummer, but also, that's enough to deal with what felt like a big inconsistency in Rust - inability to work well with arrays.
- conradludgate 6y agoI'm already using them in nightly and they are amazing. The only thing left that I want with generics is variadics/tuples. The only way currently to implement a trait over a generic tuple is to write a macro and call it for however many sized tuples you want. I've not seen any convincing RFCs about it yet though so I'm not confident we'll get them any time soon
- remexre 6y agoI use https://docs.rs/frunk/0.3.1/frunk/ https://docs.rs/frunk/0.3.1/frunk/ to get around this in the meantime.
- PoignardAzur 6y agoI wouldn't call it a convincing RFC, but I did recently write an analysis on the subject: https://gist.github.com/PoignardAzur/aea33f28e2c58ffe1a93b8f8d3c58667 https://gist.github.com/PoignardAzur/aea33f28e2c58ffe1a93b8f...
- felipellrocha 6y agoI hit this limitation recently, and although it was a bummer, it’s good to hear that a solution is being worked on
- CodesInChaos 6y agoUnfortunately the version of const generics stabilized in 1.51 has many limitations. The core problem seems to be that evaluating const functions can panic, while generics should only produce errors when constraints are not met, not when instantiating them. The current limitation I find the most annoying is that you can't use associated constants in generics.