Skip to main content

snowcat_macros/
lib.rs

1mod discriminate;
2
3use proc_macro::TokenStream;
4
5/// Create a "discriminant" enum for the current enum: a data-less version of
6/// the enum that can be used to match solely on the variant names.
7/// 
8/// # Example
9/// ```rust
10/// use snowcat_macros::discriminate;
11/// 
12/// #[discriminate]
13/// enum MessageType {
14///     Action(String),
15///     Ad(String),
16///     Message(String),
17/// }
18/// 
19/// let message = MessageType::Ad(String::from("ad name here"));
20/// 
21/// assert_eq!(message.discriminant(), MessageTypeDiscriminant::Ad);
22/// assert_ne!(message.discriminant(), MessageTypeDiscriminant::Message);
23/// ```
24#[proc_macro_attribute]
25pub fn discriminate(_: TokenStream, input: TokenStream) -> TokenStream {
26	discriminate::discriminate(input)
27}