--- a/src/euclidean.rs Sat Dec 14 09:31:27 2024 -0500 +++ b/src/euclidean.rs Tue Dec 31 08:30:02 2024 -0500 @@ -2,8 +2,9 @@ Euclidean spaces. */ +use std::ops::{Mul, MulAssign, Div, DivAssign, Add, Sub, AddAssign, SubAssign, Neg}; use crate::types::*; -use std::ops::{Mul, MulAssign, Div, DivAssign, Add, Sub, AddAssign, SubAssign, Neg}; +use crate::mapping::Space; /// Space (type) with a defined dot product. /// @@ -18,7 +19,7 @@ /// The type should implement vector space operations (addition, subtraction, scalar /// multiplication and scalar division) along with their assignment versions, as well /// as the [`Dot`] product with respect to `Self`. -pub trait Euclidean<F : Float> : Sized + Dot<Self,F> +pub trait Euclidean<F : Float> : Space + Dot<Self,F> + Mul<F, Output=<Self as Euclidean<F>>::Output> + MulAssign<F> + Div<F, Output=<Self as Euclidean<F>>::Output> + DivAssign<F> + Add<Self, Output=<Self as Euclidean<F>>::Output>