onednnl 0.0.1

high-level bindings to oneDNN Deep Learning library
Documentation
use onednnl_sys::{dnnl_graph_op_attr_t, dnnl_graph_op_kind_t};

pub trait OpSpec {
    const KIND: dnnl_graph_op_kind_t::Type;
}

pub enum RequiredAttrs {
    None,
    Some(Vec<(dnnl_graph_op_attr_t::Type, AttrValue)>),
}

#[derive(Debug, Clone)]
pub enum AttrValue {
    Bool(Vec<u8>),
    Int(Vec<i64>),
    Float(Vec<f32>),
    Str(String),
}

impl From<Vec<u8>> for AttrValue {
    fn from(value: Vec<u8>) -> Self {
        AttrValue::Bool(value)
    }
}

impl From<Vec<i64>> for AttrValue {
    fn from(value: Vec<i64>) -> Self {
        AttrValue::Int(value)
    }
}

impl From<Vec<f32>> for AttrValue {
    fn from(value: Vec<f32>) -> Self {
        AttrValue::Float(value)
    }
}

impl From<String> for AttrValue {
    fn from(value: String) -> Self {
        AttrValue::Str(value)
    }
}