diff --git a/src/geometry/scale.rs b/src/geometry/scale.rs index 33a6bf3a..2f677d95 100755 --- a/src/geometry/scale.rs +++ b/src/geometry/scale.rs @@ -284,17 +284,15 @@ impl Scale { DefaultAllocator: Allocator, U1>, DimNameSum, U1>> + Allocator, U1>, U1>, { - // Unfortunately rust refuses at all costs to allow calling .to_homogeneous on a SVector - // (self.vector) so I had to do a manual copy in a new OVector - // The exact error is that to_homogeneous when called on a SVector requires DimAdd on Const - // not DimNameAdd which will strangely bring rust into thinking that DimNameAdd is a - // trait object and no longer a generic parameter. - let mut v = OVector::, U1>>::from_element(T::one()); + // TODO: use self.vector.push() instead. We can’t right now because + // that would require the DimAdd bound (but here we use DimNameAdd). + // This should be fixable once Rust gets a more complete support of + // const-generics. + let mut v = OVector::from_element(T::one()); for i in 0..D { - v[(i, 0)] = self.vector[(i, 0)].clone(); + v[i] = self.vector[i].clone(); } - return OMatrix::, U1>, DimNameSum, U1>>::from_diagonal(&v); - } + return OMatrix::from_diagonal(&v); /// Inverts `self` in-place. ///