Comments (2)
I think the current support of multidispatch by rustc can give us just enough flexibility to fix this easily using something like this:
impl<N: Mul<N, N>> Vec2MulRhs<N, Vec2<N>> for N {
#[inline]
fn binop(left: &Vec2<N>, right: &N) -> Vec2<N> {
Vec2::new(left.x * *right, left.y * *right)
}
}
In fact I believe the only thing that prevents us from using multidispatch only instead of the double-dispatch trick are some corner-cases I encountered in ncollide
that require better where clauses (though those corner cases might be related to the current issue and be fixed at the same time as this, I have to check).
from nalgebra.
The problem with that is just that you can't have multiple generic implementations, which would prevent Matrix * Vector and Matrix * Scalar to be implemented at the same time like this.
Maybe we could do something like this:
trait DDMul<C> {
fn ddmul(&self) -> C;
}
impl<T: BaseFloat> DDMul<Vec2<T>> for (Vec2<T>, T) { /* ... */ }
impl<B, C> Mul<B, C> for Vec2
where (Vec2, B): DDMul<C>
{
fn mul(&self, other: &B) -> C { (*self, *other).ddmul() }
}
But this is only useful for the brief period between full where clauses and multidispatch.
from nalgebra.
Related Issues (20)
- Memory leak in generic_resize/reallocate_copy HOT 2
- Inverting a 4x4 matrix with `try_inverse_mut` doesn't leave `self` unchanged if the inversion fails.
- Numerically vulnerable axis calculation in Rotation3
- How to construct a symmetric matrix in nalgebra? HOT 3
- `from_iter` implementation may run indefinitely HOT 8
- Request: Allow the multiplication of matrices of matrices HOT 1
- Owned MatrixView Lifetime issues HOT 2
- GAT in Allocator Trait HOT 3
- Matrix should have `sub_scalar` and `sub_scalar_mut` methods. HOT 3
- Update to syn 2.0
- Proposal: Add helper methods `is_hermitian` and `is_unitary` for the `Matrix` struct HOT 3
- Alias 'RowDVectorView<>' is missing for the result of DMatrix<T>.row() HOT 1
- Add `map_to` just like `add_to`, and `map_assign` just like `add_assign` HOT 3
- `add_to` others `*_to` methods should be a trait and return the destination reference HOT 2
- unhandled integer overflow in matrix view construction HOT 1
- Concept for reducing the verbosity of generics
- Update user guide to include matrix, stack macros
- New stack macro implementation triggers clippy::toplevel_ref_arg warning HOT 3
- Declaring const matrix/vector in nalgebra-glm?
- Quaternion.to_vector() protocol missing key specifications
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from nalgebra.