tract-cli 0.23.0-dev.3

Tiny, no-nonsense, self contained, TensorFlow and ONNX inference
#[macro_export]
macro_rules! dispatch_model {
    ($model: expr, $expr: expr) => {
        (|model: &Arc<dyn Model>| {
            if let Ok(m) = Arc::downcast::<tract_hir::prelude::InferenceModel>(model.clone()) {
                return $expr(m);
            }
            if let Ok(m) = Arc::downcast::<tract_hir::prelude::TypedModel>(model.clone()) {
                return $expr(m);
            }
            #[cfg(feature = "pulse")]
            {
                if let Ok(m) = Arc::downcast::<PulsedModel>(model.clone()) {
                    return $expr(m);
                }
            }
            unreachable!()
        })($model)
    };
}

#[macro_export]
macro_rules! dispatch_model_no_pulse {
    ($model: expr, $expr: expr) => {
        (|model: &Arc<dyn Model>| {
            if let Ok(m) = Arc::downcast::<tract_hir::prelude::InferenceModel>(model.clone()) {
                return $expr(m);
            }
            if let Ok(m) = Arc::downcast::<tract_hir::prelude::TypedModel>(model.clone()) {
                return $expr(m);
            }
            bail!("Pulse model are unsupported here")
        })($model)
    };
}