1use crate::to_command::{ToArg, ToCommand};
2
3#[derive(Debug, Clone, Hash, Ord, PartialOrd, Eq, PartialEq)]
4pub enum YesNo {
5 Yes,
6 No,
7}
8
9impl ToCommand for YesNo {
10 fn to_command(&self) -> Vec<String> {
11 let mut cmd = vec![];
12 match self {
13 YesNo::Yes => {
14 cmd.push("yes".to_string());
15 }
16 YesNo::No => {
17 cmd.push("no".to_string());
18 }
19 }
20 cmd
21 }
22}
23
24impl ToArg for YesNo {
25 fn to_arg(&self) -> &str {
26 match self {
27 YesNo::Yes => "yes",
28 YesNo::No => "no",
29 }
30 }
31}
32
33#[derive(Debug, Clone, Hash, Ord, PartialOrd, Eq, PartialEq)]
34pub enum OnOff {
35 On,
36 Off,
37}
38
39impl ToCommand for OnOff {
40 fn to_command(&self) -> Vec<String> {
41 let mut cmd = vec![];
42 match self {
43 OnOff::On => {
44 cmd.push("on".to_string());
45 }
46 OnOff::Off => {
47 cmd.push("off".to_string());
48 }
49 }
50 cmd
51 }
52}
53
54impl ToArg for OnOff {
55 fn to_arg(&self) -> &str {
56 match self {
57 OnOff::On => "on",
58 OnOff::Off => "off",
59 }
60 }
61}
62
63#[derive(Debug, Clone, Hash, Ord, PartialOrd, Eq, PartialEq, Default)]
64pub enum OnOffAuto {
65 On,
66 Off,
67 #[default]
68 Auto,
69}
70
71impl ToCommand for OnOffAuto {
72 fn to_command(&self) -> Vec<String> {
73 let mut cmd = vec![];
74 match self {
75 OnOffAuto::On => {
76 cmd.push("on".to_string());
77 }
78 OnOffAuto::Off => {
79 cmd.push("off".to_string());
80 }
81 OnOffAuto::Auto => {
82 cmd.push("auto".to_string());
83 }
84 }
85 cmd
86 }
87}
88
89impl ToArg for OnOffAuto {
90 fn to_arg(&self) -> &str {
91 match self {
92 OnOffAuto::On => "on",
93 OnOffAuto::Off => "off",
94 OnOffAuto::Auto => "auto",
95 }
96 }
97}
98
99#[derive(Debug, Clone, Hash, Ord, PartialOrd, Eq, PartialEq, Default)]
100pub enum OnOffDefaultOn {
101 #[default]
102 On,
103 Off,
104}
105
106impl ToCommand for OnOffDefaultOn {
107 fn to_command(&self) -> Vec<String> {
108 let mut cmd = vec![];
109 match self {
110 OnOffDefaultOn::On => {
111 cmd.push("on".to_string());
112 }
113 OnOffDefaultOn::Off => {
114 cmd.push("off".to_string());
115 }
116 }
117 cmd
118 }
119}
120
121impl ToArg for OnOffDefaultOn {
122 fn to_arg(&self) -> &str {
123 match self {
124 OnOffDefaultOn::On => "on",
125 OnOffDefaultOn::Off => "off",
126 }
127 }
128}
129
130#[derive(Debug, Clone, Hash, Ord, PartialOrd, Eq, PartialEq, Default)]
131pub enum OnOffDefaultOff {
132 On,
133 #[default]
134 Off,
135}
136impl ToCommand for OnOffDefaultOff {
137 fn to_command(&self) -> Vec<String> {
138 let mut cmd = vec![];
139 match self {
140 OnOffDefaultOff::On => {
141 cmd.push("on".to_string());
142 }
143 OnOffDefaultOff::Off => {
144 cmd.push("off".to_string());
145 }
146 }
147 cmd
148 }
149}
150
151impl ToArg for OnOffDefaultOff {
152 fn to_arg(&self) -> &str {
153 match self {
154 OnOffDefaultOff::On => "on",
155 OnOffDefaultOff::Off => "off",
156 }
157 }
158}
159
160#[derive(Debug, Clone, Hash, Ord, PartialOrd, Eq, PartialEq, Default)]
161pub enum AccelType {
162 Kvm,
163 Xen,
164 Hvf,
165 Nvmm,
166 Whpx,
167 #[default]
168 Tcg,
169}
170
171impl ToArg for AccelType {
172 fn to_arg(&self) -> &str {
173 match self {
174 AccelType::Kvm => "kvm",
175 AccelType::Xen => "xen",
176 AccelType::Hvf => "hvf",
177 AccelType::Nvmm => "nvmm",
178 AccelType::Whpx => "whpx",
179 AccelType::Tcg => "tcg",
180 }
181 }
182}
183
184#[derive(Debug, Clone, Hash, Ord, PartialOrd, Eq, PartialEq)]
185pub enum IgnoreUnmap {
186 Ignore,
187 Unmap,
188}
189
190impl ToArg for IgnoreUnmap {
191 fn to_arg(&self) -> &str {
192 match self {
193 IgnoreUnmap::Ignore => "ignore",
194 IgnoreUnmap::Unmap => "unmap",
195 }
196 }
197}
198
199#[derive(Debug, Clone, Hash, Ord, PartialOrd, Eq, PartialEq)]
200pub enum OnOffUnmap {
201 On,
202 Off,
203 Unmap,
204}
205
206impl ToArg for OnOffUnmap {
207 fn to_arg(&self) -> &str {
208 match self {
209 OnOffUnmap::On => "on",
210 OnOffUnmap::Off => "off",
211 OnOffUnmap::Unmap => "unmap",
212 }
213 }
214}
215
216#[derive(Debug, Clone, Hash, Ord, PartialOrd, Eq, PartialEq)]
217pub enum AutoNeverAlways {
218 Auto,
219 Never,
220 Always,
221}
222
223impl ToArg for AutoNeverAlways {
224 fn to_arg(&self) -> &str {
225 match self {
226 AutoNeverAlways::Auto => "auto",
227 AutoNeverAlways::Never => "never",
228 AutoNeverAlways::Always => "always",
229 }
230 }
231}