4 releases (2 breaking)
0.3.0 | May 19, 2021 |
---|---|
0.2.1 | Mar 31, 2020 |
0.2.0 | Mar 31, 2020 |
0.1.0 | Mar 6, 2020 |
#2163 in Rust patterns
38 downloads per month
Used in 6 crates
(2 directly)
10KB
101 lines
enum_properties
A macro for declaring static properties on enum variants. See the documentation for more information.
Example
use enum_properties::enum_properties;
struct SolidProperties {
verts: i32,
edges: i32,
faces: i32,
}
enum_properties! {
#[derive(Clone, Copy, Debug)]
enum PlatonicSolid: SolidProperties {
Tetrahedron {
verts: 4,
edges: 6,
faces: 4,
},
Cube {
verts: 8,
edges: 12,
faces: 6,
},
Octahedron {
verts: 6,
edges: 12,
faces: 8,
},
Dodecahedron {
verts: 20,
edges: 30,
faces: 12,
},
Icosahedron {
verts: 12,
edges: 30,
faces: 20,
},
}
}
fn main() {
let cube = PlatonicSolid::Cube;
assert_eq!(cube.verts - cube.edges + cube.faces, 2);
}