layout 0.0.1

Optimized memory layout using struct of array, Data-oriented design in Rust, DOD SOA
Documentation
use layout::SOA;

#[derive(Debug, Clone, PartialEq, SOA)]
#[soa_attr(Vec, cfg_attr(test, derive(PartialEq, Debug)))]
pub struct Particle {
    pub name: String,
    pub mass: f64,
}

impl Particle {
    pub fn new(name: String, mass: f64) -> Self {
        Particle { name, mass }
    }
}

#[test]
fn eq_test() {
    let particles0 = ParticleVec {
        name: vec![String::from("foo"), String::from("bar")],
        mass: vec![1.0, 2.0],
    };
    let particles1 = ParticleVec {
        name: vec![String::from("foo"), String::from("bar")],
        mass: vec![1.0, 2.0],
    };
    assert_eq!(particles0, particles1);
}