1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
/*
* SPDX-License-Identifier: MIT
* Copyright (c) 2023 - 2026. The DeepCausality Authors and Contributors. All Rights Reserved.
*/
/// Marker trait to identify numeric scalar types.
///
/// This trait is meant to distinguish primitive, copyable, and comparable
/// scalar types (like `f64`, `i64`, `u32`) from structured data types
/// (like `Data<f64>`, `Vec<T>`, or symbolic inputs).
///
/// # Purpose
/// Used to gate generic causal operations like `verify_single_cause`
/// or `reason_all_causes()` when working with raw scalar inputs.
///
/// # Trait Bounds
/// Scalar values must be:
/// - `Copy`: to avoid borrowing complexity
/// - `Clone`: for repeated safe use
/// - `PartialOrd`: for threshold logic
///
/// # Examples
/// ```rust
/// use deep_causality::ScalarValue;
///
/// fn process_value<T: ScalarValue>(val: T) -> bool {
/// val > T::default()
/// }
/// ```
// Blanket implementations for primitive scalar types