#[cfg(doc)]
use crate::Machine;
use log::error;
use std::fmt::Display;
use vbox_raw::sys_lib as raw;
#[derive(Debug, Copy, Clone)]
pub enum CloneOptions {
Link,
KeepAllMACs,
KeepNATMACs,
KeepDiskNames,
KeepHwUUIDs,
}
impl From<u32> for CloneOptions {
fn from(value: u32) -> Self {
match value {
raw::CloneOptions_CloneOptions_Link => CloneOptions::Link,
raw::CloneOptions_CloneOptions_KeepAllMACs => CloneOptions::KeepAllMACs,
raw::CloneOptions_CloneOptions_KeepNATMACs => CloneOptions::KeepNATMACs,
raw::CloneOptions_CloneOptions_KeepDiskNames => CloneOptions::KeepDiskNames,
raw::CloneOptions_CloneOptions_KeepHwUUIDs => CloneOptions::KeepHwUUIDs,
_ => {
error!("Unknown CloneOptions. Type: {}", value);
CloneOptions::KeepAllMACs
}
}
}
}
impl Into<u32> for CloneOptions {
fn into(self) -> u32 {
match self {
CloneOptions::Link => raw::CloneOptions_CloneOptions_Link,
CloneOptions::KeepAllMACs => raw::CloneOptions_CloneOptions_KeepAllMACs,
CloneOptions::KeepNATMACs => raw::CloneOptions_CloneOptions_KeepNATMACs,
CloneOptions::KeepDiskNames => raw::CloneOptions_CloneOptions_KeepDiskNames,
CloneOptions::KeepHwUUIDs => raw::CloneOptions_CloneOptions_KeepHwUUIDs,
}
}
}
impl Display for CloneOptions {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{}", format!("{:?}", self))
}
}