EinsumBackend

Trait EinsumBackend 

Source
pub trait EinsumBackend<Alg: Semiring>: TensorSemiringCore<Alg> + TensorSemiringFastPath<Alg, Plan = <Self as TensorSemiringCore<Alg>>::Plan, Context = <Self as TensorSemiringCore<Alg>>::Context> { }
Expand description

Public backend contract accepted by tenferro-einsum.

Backends must provide the semiring core operations needed for all einsum execution paths, plus the optional semiring fast paths used for optimized contraction and elementwise multiplication.

§Examples

use tenferro_algebra::Standard;
use tenferro_einsum::EinsumBackend;
use tenferro_prims::CpuBackend;

fn assert_backend<B: EinsumBackend<Standard<f64>>>() {}
assert_backend::<CpuBackend>();

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl<Alg, Backend> EinsumBackend<Alg> for Backend
where Alg: Semiring, Backend: TensorSemiringCore<Alg> + TensorSemiringFastPath<Alg, Plan = <Backend as TensorSemiringCore<Alg>>::Plan, Context = <Backend as TensorSemiringCore<Alg>>::Context>,