Previously, difference.rs built its group-theoretic traits out of std::ops traits like AddAssign, Neg, and Mul. These traits are not implemented for many common types that you might want, like tuples, arrays, and vectors. To use these types, custom structs were implemented, but with "miserable ergonomics".
This PR replaces the reliance on std::ops traits by moving the methods in to local traits with similar names, and expanded implementations.
Previously,
difference.rs
built its group-theoretic traits out ofstd::ops
traits likeAddAssign
,Neg
, andMul
. These traits are not implemented for many common types that you might want, like tuples, arrays, and vectors. To use these types, custom structs were implemented, but with "miserable ergonomics".This PR replaces the reliance on
std::ops
traits by moving the methods in to local traits with similar names, and expanded implementations.