1#[cfg(any(feature = "std", feature = "alloc"))]
5use karpal_arrow::{ArrowLoop, FnA};
6
7use crate::tensor::Tensor;
8
9pub trait Trace: Tensor {
16 fn trace<A: Clone + 'static, B: Clone + 'static, D: Default + Clone + 'static>(
17 morphism: Self::P<(A, D), (B, D)>,
18 ) -> Self::P<A, B>;
19}
20
21#[cfg(any(feature = "std", feature = "alloc"))]
22impl Trace for FnA {
23 fn trace<A: Clone + 'static, B: Clone + 'static, D: Default + Clone + 'static>(
24 morphism: Self::P<(A, D), (B, D)>,
25 ) -> Self::P<A, B> {
26 Self::loop_arrow(morphism)
27 }
28}