1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
// devela::examples::code::enumset
//
//! Shows how to use the [`enumset!`] declarative macro.
//!
//! # Examples
//!
//! This will create the [`ExampleEnum`] and [`ExampleEnumSet`] interrelated types.
//! ```
//! # use devela::enumset;
//! enumset! {
//! /// An example created with [`enumset!`].
//! #[allow(dead_code)]
//! #[derive(Clone, Default)]
//! #[repr(u64)]
//! pub enum ExampleEnum<'a, 'b, T>(
//! /// Represents a set of [`ExampleEnum`] variants.
//! pub ExampleEnumSet: u8
//! )
//! [where T: Clone] // supports where clauses (between [])
//! {
//! #[default]
//! Variant0 = 1,
//! /// A tuple variant.
//! Variant1([u8; 3]),
//! /// A self-referential tuple variant.
//! #[cfg(feature = "std")]
//! Variant2(Box<Self>),
//! /// A struct variant with discriminant.
//! Variant3 {
//! /// field1 docs.
//! some: [u8; 2],
//! /// field2 docs.
//! other: u32
//! } = 30,
//! /// Supports generics and lifetimes.
//! Variant4(T, &'a str, &'b u32),
//! }
//! }
//!
//! assert_eq![5, ExampleEnum::<()>::ENUM_VARIANTS];
//! ```
//
use enumset;
enumset!