discriminant_rs/
lib.rs

1//! # Discriminant
2//!
3//! Convert a enum (with or without field) with `#[repr(...)]` to corresponding type. Compatible with `#![no_std]`.
4//!
5//! ## Example
6//!
7//! ```
8//! use discriminant_rs::Discriminant;
9//! #[derive(Discriminant)]
10//! #[repr(i16)]
11//! enum Test {
12//!     One = 1,
13//!     Two = 2,
14//!     Four = 4,
15//! }
16//!
17//! fn test() {
18//!     assert_eq!(Test::One.discriminant(), 1);
19//!     assert_eq!(Test::Two.discriminant(), 2);
20//!     assert_eq!(Test::Four.discriminant(), 4);
21//! }
22//! ```
23
24// Re-export macros
25extern crate discriminant_derive;
26pub use discriminant_derive::Discriminant;
27
28/// Trait to constraint the type of macro
29pub trait Discriminant<T>
30where
31    T: num_traits::ToPrimitive,
32{
33    fn discriminant(&self) -> T;
34}