tenferro-runtime 0.3.0

Concrete tensor helpers, traced tensors, graph execution, and extension runtime support for tenferro.
Documentation
use std::cell::Cell;

thread_local! {
    static CONSTRAINT_SCOPE_CLONES: Cell<Option<usize>> = const { Cell::new(None) };
}

pub(super) fn with_constraint_scope_clone_count<T>(f: impl FnOnce() -> T) -> (T, usize) {
    CONSTRAINT_SCOPE_CLONES.with(|count| count.set(Some(0)));
    let result = f();
    let clones = CONSTRAINT_SCOPE_CLONES.with(|count| count.replace(None).unwrap_or_default());
    (result, clones)
}

pub(super) fn record_constraint_scope_clones(clones: usize) {
    CONSTRAINT_SCOPE_CLONES.with(|count| {
        if let Some(current) = count.get() {
            count.set(Some(current + clones));
        }
    });
}