Skip to content

Commit 1f09d37

Browse files
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 1f09d37

File tree

5 files changed

+1260
-362
lines changed

5 files changed

+1260
-362
lines changed

soavec_derive/src/lib.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
// License, v. 2.0. If a copy of the MPL was not distributed with this
33
// file, You can obtain one at https://mozilla.org/MPL/2.0/.
44

5+
pub(crate) mod soa_enum;
6+
pub(crate) mod soa_struct;
57
mod soable;
68

79
use proc_macro::TokenStream;

0 commit comments

Comments
 (0)