use table_enum::table_enum;
table_enum! {
#[derive(Debug)]
pub enum Planets(mass: f64, radius: f64) {
Mercury (3.303e+23, 2.4397e6),
Venus (4.869e+24, 6.0518e6),
Earth (5.976e+24, 6.37814e6),
Mars (6.421e+23, 3.3972e6),
Jupiter (1.9e+27, 7.1492e7),
Saturn (5.688e+26, 6.0268e7),
Uranus (8.686e+25, 2.5559e7),
Neptune (1.024e+26, 2.4746e7),
}
}
table_enum! {
pub enum BinaryOp(text: &'static str, #[option] precedence: i32, #[default] right_assoc: bool) {
Add("+", _, _),
Sub("-", _, _),
Mul("*", 20, _),
Div("/", 20, _),
Pow("**", 30, true),
}
}
#[test]
fn venus_mass() {
assert_eq!(Planets::Venus.mass(), 4.869e+24);
}
#[test]
fn add_text() {
assert_eq!(BinaryOp::Pow.right_assoc(), true);
}