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}