qemu_command_builder/
common.rs

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}