Update src/geometry/scale.rs

Co-authored-by: Sébastien Crozet <sebastien@crozet.re>
This commit is contained in:
Yuri6037 2021-10-24 20:31:35 +02:00 committed by GitHub
parent f7eec7317c
commit ded853757c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 7 additions and 9 deletions

View File

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