#[derive(Debug, Clone, PartialEq, Eq)]
pub enum NetworkDeviceInputOutputControlError<E: error::Error + 'static>
{
Creation(CreationError),
ControlOperation(E),
PermissionDenied,
OutOfKernelMemory,
Other(String),
}
impl<E: error::Error + 'static> Display for NetworkDeviceInputOutputControlError<E>
{
#[inline(always)]
fn fmt(&self, f: &mut Formatter) -> fmt::Result
{
Debug::fmt(self, f)
}
}
impl<E: error::Error + 'static> error::Error for NetworkDeviceInputOutputControlError<E>
{
#[inline(always)]
fn source(&self) -> Option<&(dyn error::Error + 'static)>
{
use self::NetworkDeviceInputOutputControlError::*;
match self
{
&Creation(ref error) => Some(error),
&ControlOperation(ref error) => Some(error),
&PermissionDenied => None,
&OutOfKernelMemory => None,
&Other(..) => None,
}
}
}
impl<E: error::Error + 'static> From<CreationError> for NetworkDeviceInputOutputControlError<E>
{
#[inline(always)]
fn from(value: CreationError) -> Self
{
NetworkDeviceInputOutputControlError::Creation(value)
}
}
impl From<ObjectNameFromBytesError> for NetworkDeviceInputOutputControlError<ObjectNameFromBytesError>
{
#[inline(always)]
fn from(value: ObjectNameFromBytesError) -> Self
{
NetworkDeviceInputOutputControlError::ControlOperation(value)
}
}
impl From<TransmissionQueueLengthOutOfRangeError> for NetworkDeviceInputOutputControlError<TransmissionQueueLengthOutOfRangeError>
{
#[inline(always)]
fn from(value: TransmissionQueueLengthOutOfRangeError) -> Self
{
NetworkDeviceInputOutputControlError::ControlOperation(value)
}
}
impl NetworkDeviceInputOutputControlError<Infallible>
{
#[inline(always)]
pub(crate) fn map_error<E2: error::Error + 'static>(self) -> NetworkDeviceInputOutputControlError<E2>
{
use self::NetworkDeviceInputOutputControlError::*;
match self
{
Creation(error) => Creation(error),
ControlOperation(_) => unreachable_code(format_args!("")),
PermissionDenied => PermissionDenied,
OutOfKernelMemory => OutOfKernelMemory,
Other(other) => Other(other),
}
}
}