Summary
strided-einsum2/src/backend.rs defines two separate traits:
BackendConfig — 2 const flags (MATERIALIZES_CONJ, REQUIRES_UNIT_STRIDE)
BgemmBackend<T> — single bgemm_contiguous_into() method
Plus 3 marker structs (FaerBackend, BlasBackend, NaiveBackend) and ActiveBackend type alias via cfg.
Proposal
Merge into a single trait:
pub trait Backend<T: ScalarBase> {
const MATERIALIZES_CONJ: bool;
const REQUIRES_UNIT_STRIDE: bool;
fn bgemm_contiguous_into(...) -> Result<()>;
}
~30 lines reduction, simpler trait hierarchy.
Risk
Low. Purely organizational refactoring.
Summary
strided-einsum2/src/backend.rsdefines two separate traits:BackendConfig— 2 const flags (MATERIALIZES_CONJ,REQUIRES_UNIT_STRIDE)BgemmBackend<T>— singlebgemm_contiguous_into()methodPlus 3 marker structs (
FaerBackend,BlasBackend,NaiveBackend) andActiveBackendtype alias via cfg.Proposal
Merge into a single trait:
~30 lines reduction, simpler trait hierarchy.
Risk
Low. Purely organizational refactoring.