onednnl 0.0.1

high-level bindings to oneDNN Deep Learning library
Documentation
use {onednnl_sys::dnnl_status_t, std::fmt::Display};

#[derive(Debug, PartialEq)]
pub enum DnnlError {
    InvalidArguments,
    OutOfMemory,
    Unsupported,
    Unknown,
    InvalidDataType,
    InvalidGraph,
    InvalidGraphOp,
    RuntimeError,
    InvalidShape,
    LastImplReached,
    NotRequired,
    Success,
    InvalidLayout,
    NonNullViolated,
    InvalidQueryOutput,
}

impl From<dnnl_status_t::Type> for DnnlError {
    fn from(status: dnnl_status_t::Type) -> Self {
        match status {
            dnnl_status_t::dnnl_invalid_arguments => Self::InvalidArguments,
            dnnl_status_t::dnnl_out_of_memory => Self::OutOfMemory,
            dnnl_status_t::dnnl_unimplemented => Self::Unsupported,
            dnnl_status_t::dnnl_invalid_data_type => Self::InvalidDataType,
            dnnl_status_t::dnnl_invalid_graph => Self::InvalidGraph,
            dnnl_status_t::dnnl_invalid_graph_op => Self::InvalidGraphOp,
            dnnl_status_t::dnnl_runtime_error => Self::RuntimeError,
            dnnl_status_t::dnnl_invalid_shape => Self::InvalidShape,
            dnnl_status_t::dnnl_last_impl_reached => Self::LastImplReached,
            dnnl_status_t::dnnl_not_required => Self::NotRequired,
            dnnl_status_t::dnnl_success => Self::Success,
            _ => Self::Unknown,
        }
    }
}

impl std::error::Error for DnnlError {}

impl Display for DnnlError {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        match self {
            DnnlError::InvalidArguments => write!(f, "InvalidArguments"),
            DnnlError::OutOfMemory => write!(f, "OutOfMemory"),
            DnnlError::Unsupported => write!(f, "Unsupported"),
            DnnlError::Unknown => write!(f, "Unknown"),
            DnnlError::InvalidDataType => write!(f, "InvalidDataType"),
            DnnlError::InvalidGraph => write!(f, "InvalidGraph"),
            DnnlError::InvalidGraphOp => write!(f, "InvalidGraphOp"),
            DnnlError::RuntimeError => write!(f, "RuntimeError"),
            DnnlError::InvalidShape => write!(f, "InvalidShape"),
            DnnlError::LastImplReached => write!(f, "LastImplReached"),
            DnnlError::NotRequired => write!(f, "NotRequired"),
            DnnlError::Success => write!(f, "Success"),
            DnnlError::InvalidLayout => write!(f, "InvalidLayout"),
            DnnlError::NonNullViolated => write!(f, "NonNullViolated"),
            DnnlError::InvalidQueryOutput => write!(f, "InvalidQueryOutput"),
        }
    }
}