1 /**
2  Allows declaring non-optional `Int` field without assigning an initial value.
3  */
4 public extension Field where Type == Int {
5   convenience init(wrappedValue: Type = 0) {
6     self.init(wrappedValue: wrappedValue, [])
7   }
8 
9   convenience init(wrappedValue: Type = 0, _ options: FieldOption...) {
10     self.init(wrappedValue: wrappedValue, options)
11   }
12 }
13 
14 /**
15  Allows declaring non-optional `Double` field without assigning an initial value.
16  */
17 public extension Field where Type == Double {
18   convenience init(wrappedValue: Type = 0.0) {
19     self.init(wrappedValue: wrappedValue, [])
20   }
21 
22   convenience init(wrappedValue: Type = 0.0, _ options: FieldOption...) {
23     self.init(wrappedValue: wrappedValue, options)
24   }
25 }
26 
27 /**
28  Allows declaring non-optional `Bool` field without assigning an initial value.
29  */
30 public extension Field where Type == Bool {
31   convenience init(wrappedValue: Type = false) {
32     self.init(wrappedValue: wrappedValue, [])
33   }
34 
35   convenience init(wrappedValue: Type = false, _ options: FieldOption...) {
36     self.init(wrappedValue: wrappedValue, options)
37   }
38 }
39 
40 /**
41  Allows declaring non-optional `String` field without assigning an initial value.
42  */
43 public extension Field where Type == String {
44   convenience init(wrappedValue: Type = "") {
45     self.init(wrappedValue: wrappedValue, [])
46   }
47 
48   convenience init(wrappedValue: Type = "", _ options: FieldOption...) {
49     self.init(wrappedValue: wrappedValue, options)
50   }
51 }
52 
53 /**
54  Allows declaring non-optional array field without assigning an initial value.
55  */
56 public extension Field where Type: ExpressibleByArrayLiteral {
57   convenience init(wrappedValue: Type = []) {
58     self.init(wrappedValue: wrappedValue, [])
59   }
60 
61   convenience init(wrappedValue: Type = [], _ options: FieldOption...) {
62     self.init(wrappedValue: wrappedValue, options)
63   }
64 }
65 
66 /**
67  Allows declaring non-optional dictionary field without assigning an initial value.
68  */
69 public extension Field where Type: ExpressibleByDictionaryLiteral {
70   convenience init(wrappedValue: Type = [:]) {
71     self.init(wrappedValue: wrappedValue, [])
72   }
73 
74   convenience init(wrappedValue: Type = [:], _ options: FieldOption...) {
75     self.init(wrappedValue: wrappedValue, options)
76   }
77 }
78 
79 /**
80  Allows declaring non-optional record field without assigning an initial value.
81  */
82 public extension Field where Type: Record {
83   convenience init(wrappedValue: Type = Type.init()) {
84     self.init(wrappedValue: wrappedValue, [])
85   }
86 
87   convenience init(wrappedValue: Type = Type.init(), _ options: FieldOption...) {
88     self.init(wrappedValue: wrappedValue, options)
89   }
90 }
91