1 #![allow(dead_code)]
2 
3 #[macro_use]
4 extern crate derive_more;
5 
6 #[derive(Unwrap)]
7 enum Either<TLeft, TRight> {
8     Left(TLeft),
9     Right(TRight),
10 }
11 
12 #[derive(Unwrap)]
13 enum Maybe<T> {
14     Nothing,
15     Just(T),
16 }
17 
18 #[derive(Unwrap)]
19 enum Color {
20     RGB(u8, u8, u8),
21     CMYK(u8, u8, u8, u8),
22 }
23 
24 #[derive(Unwrap)]
25 enum Nonsense<'a, T> {
26     Ref(&'a T),
27     NoRef,
28     #[unwrap(ignore)]
29     NoRefIgnored,
30 }
31 
32 #[derive(Unwrap)]
33 enum WithConstraints<T>
34 where
35     T: Copy,
36 {
37     One(T),
38     Two,
39 }
40 #[derive(Unwrap)]
41 enum KitchenSink<'a, 'b, T1: Copy, T2: Clone>
42 where
43     T2: Into<T1> + 'b,
44 {
45     Left(&'a T1),
46     Right(&'b T2),
47     OwnBoth(T1, T2),
48     Empty,
49     NeverMind(),
50     NothingToSeeHere(),
51 }
52 
53 #[test]
test_unwrap()54 pub fn test_unwrap() {
55     assert_eq!(Maybe::<()>::Nothing.unwrap_nothing(), ());
56 }
57 
58 #[test]
59 #[should_panic]
test_unwrap_panic()60 pub fn test_unwrap_panic() {
61     Maybe::<()>::Nothing.unwrap_just()
62 }
63