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