2 // Regression test for #48551. Covers a case where duplicate candidates
3 // arose during associated type projection.
5 use std::ops::{Mul, MulAssign};
7 pub trait ClosedMul<Right>: Sized + Mul<Right, Output = Self> + MulAssign<Right> {}
8 impl<T, Right> ClosedMul<Right> for T
10 T: Mul<Right, Output = T> + MulAssign<Right>,
14 pub trait InnerSpace: ClosedMul<<Self as InnerSpace>::Real> {
18 pub trait FiniteDimVectorSpace: ClosedMul<<Self as FiniteDimVectorSpace>::Field> {
22 pub trait FiniteDimInnerSpace
23 : InnerSpace + FiniteDimVectorSpace<Field = <Self as InnerSpace>::Real> {
26 pub trait EuclideanSpace: ClosedMul<<Self as EuclideanSpace>::Real> {
27 type Coordinates: FiniteDimInnerSpace<Real = Self::Real>
28 + Mul<Self::Real, Output = Self::Coordinates>
29 + MulAssign<Self::Real>;