Commit 658cc74
committed
feat: add SoAble derive support for enums
Implement struct-of-arrays transformation for enums with discriminant-based
storage. Enums are decomposed into a separate discriminant array and union
arrays for each field position.
Features:
- Generate discriminant-only enum with preserved explicit values
- Create union types for each field position across variants
- Support named and unnamed variant fields
- Support unit variants and explicit discriminant expressions
- Preserve enum visibility (pub, pub(crate), private)
Safety:
- Discriminant fields kept private in helper structs
- Safe get_discriminant() accessor methods
- Unsafe get_discriminant_mut() requires caller to maintain invariants
- Prevents unsound discriminant/union field mismatches
Tests added for discriminant access, named fields, and visibility.1 parent 21ce1d6 commit 658cc74
File tree
5 files changed
+1247
-362
lines changed- soavec_derive
- src
- tests
5 files changed
+1247
-362
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
| 5 | + | |
| 6 | + | |
5 | 7 | | |
6 | 8 | | |
7 | 9 | | |
| |||
0 commit comments