3 ms·
> There's nothing special about Option, it's not a langitem for example While Option is not a lang item, Some and None are. Because they are critical to the de
by masklinn 4y ago
> There's nothing special about Option, it's not a langitem for example
While Option is not a lang item, Some and None are. Because they are critical to the desugaring of `for` loops for instance.
Thus Option is, transitively, a lang item.
- tialaramex 4y agoGood point, I'd forgotten Some and None are indeed needed to de-sugar for. Do you know of anywhere else the actual language guts need them ?
- masklinn 4y agoI can't think of an other one, but I won't claim exclusive knowledge of the language's desugaring.
- jenadine 4y agoThe `?` operator works with Option. I know it is actually through the Try trait internally, but since it is only implemented for a few built-in type, it makes Option special.
- masklinn 4y agoMeh. That's just because it's an experimental / unstable trait. That Rev or Peekable implement TrustedLen does not make them special.
- ecton 4y agoAdditionally, the compiler optimizes certain Option<T> types to not require additional storage space.
- Measter 4y agoThat optimization isn't specific to Option, it works for any enum.