#![allow(dead_code)]
use enumeraties::props;
enum Shape {
Triangle,
Square,
Hexagon,
}
struct ShapeDef {
name: &'static str,
vertices: u32,
internal_angle: f32, }
props! {
impl Deref for Shape as const ShapeDef {
Self::Triangle => {
name: "Triangle",
vertices: 3,
internal_angle: core::f32::consts::PI / 3.,
}
Self::Square => {
name: "Square",
vertices: 4,
internal_angle: core::f32::consts::PI / 4.,
}
Self::Hexagon => {
name: "Hexagon",
vertices: 6,
internal_angle: core::f32::consts::PI / 6.,
}
}
}
pub fn main() {
println!(
"A {} has {} vertices and an internal angle of {:.3} radian.",
Shape::Hexagon.name, Shape::Hexagon.vertices, Shape::Hexagon.internal_angle )
}