qemu_command_builder/
common.rs

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