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
//! # `sealed_trait`
//! A utility for generating sealed traits in Rust.
//! Inspired by Java's `sealed class` syntax.
//!
//! ## Usage
//! You can create a sealed trait by using the `sealed_trait` macro:
//! ```
//! sealed_trait! {
//! pub sealed trait TestTrait permits i32 => {
//! fn print_me(self);
//! }
//!
//! impl TestTrait for i32 {
//! fn print_me(self) {
//! println!("{self}")
//! }
//! }
//! }
//! ```
//! You can also add supertraits to your traits, but they have to be inside square brackets and separated by **commas**, not `+`:
//! ```
//! sealed_trait! {
//! pub sealed trait TestTrait: [Sized, Into<i32>] permits i32 => {
//! ...
//! }
//! }
//! ```
pub use paste;