spacejam / sled

the champagne of beta embedded databases
Apache License 2.0
7.89k stars 377 forks source link

Use `NonZeroU64` in the new `InlineArray` so the compiler can optimize around it #1508

Open AaronKutch opened 2 weeks ago

AaronKutch commented 2 weeks ago

I notice that the new InlineArray is based on a [u8; 8] that then gets converted to its different kinds. Its base representation should be a NonZero, since it appears that all valid bit patterns of it are intended to be nonzero. The compiler can then optimize things like Option<NonZeroU64> to be only u64 sized and greatly improve the padding of structs that use it.