#[derive(Debug)]
#[non_exhaustive]
pub(crate) enum GcItem {
Partition(*mut *mut libfdisk::fdisk_partition),
PartitionTable(*mut *mut libfdisk::fdisk_label),
Script(*mut *mut libfdisk::fdisk_script),
}
impl GcItem {
#[doc(hidden)]
#[allow(dead_code)]
pub(crate) fn destroy(self) {
match self {
Self::Partition(boxed_ptr) => {
let _ = unsafe { Box::from_raw(boxed_ptr) };
}
Self::PartitionTable(boxed_ptr) => {
let _ = unsafe { Box::from_raw(boxed_ptr) };
}
Self::Script(boxed_ptr) => {
let _ = unsafe { Box::from_raw(boxed_ptr) };
}
}
}
}
impl From<*mut *mut libfdisk::fdisk_partition> for GcItem {
fn from(ptr: *mut *mut libfdisk::fdisk_partition) -> GcItem {
Self::Partition(ptr)
}
}
impl From<*mut *mut libfdisk::fdisk_label> for GcItem {
fn from(ptr: *mut *mut libfdisk::fdisk_label) -> GcItem {
Self::PartitionTable(ptr)
}
}
impl From<*mut *mut libfdisk::fdisk_script> for GcItem {
fn from(ptr: *mut *mut libfdisk::fdisk_script) -> GcItem {
Self::Script(ptr)
}
}