#[derive(Debug)]
pub(crate) enum DeviceKind {
#[cfg(any(unix, target_os = "wasi"))]
OwnedFd(std::os::fd::OwnedFd),
}
#[derive(Debug)]
#[repr(transparent)]
pub struct OsDevice(DeviceKind);
#[cfg(any(unix, target_os = "wasi"))]
impl From<std::os::fd::OwnedFd> for OsDevice {
fn from(fd: std::os::fd::OwnedFd) -> Self {
Self(DeviceKind::OwnedFd(fd))
}
}
#[cfg(any(unix, target_os = "wasi"))]
impl std::os::fd::FromRawFd for OsDevice {
unsafe fn from_raw_fd(fd: std::os::fd::RawFd) -> Self {
Self(DeviceKind::OwnedFd(std::os::fd::OwnedFd::from_raw_fd(fd)))
}
}
impl From<OsDevice> for DeviceKind {
fn from(os_device: OsDevice) -> Self {
os_device.0
}
}