Introducing Soapy, the most complete SoA library for Rust
https://github.com/tim-harding/soapy/
Structure of Arrays (SoA) is a linear data structure that can reduce memory usage and improve performance compared to Vec. Whereas Vec stores structs contiguously, Soapy's Soa stores each field of a struct contiguously. This can yield better vectorization and cache usage. Soapy makes this easy by pairing a generic data structure with a derive macro that generates minimal compatibility code. This combination improves documentation, ergonomics, codegen, and maintainability compared to macro-only options.
I've done my best to provide a relatively complete coverage of the Vec and slice APIs. Much more can still be added, but I think the foundation is solid enough for many practical uses. Extensive doctests are provided as examples, and all tests are run under Miri to ensure safety. I was happy to achieve 6x faster computation of a bunch of dot products in an example I wrote. More benchmarks are needed and I would love to hear about your results using Soapy.