Skip to main content

facade_particle/
facade_particle.rs

1use use_physics::{Particle, ParticleFamily, ParticleKind, antiparticle, charge, spin};
2
3fn approx_eq(left: f64, right: f64) -> bool {
4    (left - right).abs() < 1.0e-12
5}
6
7fn main() {
8    let electron = Particle::new(ParticleKind::Electron);
9
10    assert_eq!(electron.family(), ParticleFamily::Lepton);
11    assert_eq!(charge(ParticleKind::Electron).thirds, -3);
12    assert_eq!(spin(ParticleKind::Photon).doubled, 2);
13    assert_eq!(
14        antiparticle(ParticleKind::Electron),
15        Some(ParticleKind::Positron)
16    );
17    assert!(approx_eq(electron.charge().as_elementary_units(), -1.0,));
18}