You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
this is stronger than it needs to be, and implementing that can be difficult for new numerical types like qd::Double<f64>, due to the Num::from_str_radix being nontrivial to implement
would it be acceptable to relax the constraint to Add<Output = Self> for addition, Sub<Output = Self> for subtraction, and Mul<Output = Self> + Add<Output = Self> + Sub<Output = Self> for multiplication?
The text was updated successfully, but these errors were encountered:
I think we can do that safely, without any breaking change even, but I do worry about relaxing too far. Relaxing in one direction becomes a limitation in the other, that it leaves little room for making new implementation choices. Plus, a long list of constraints is more of a burden for both the reader and the maintainer.
Maybe we should just add a local trait like:
pubtraitComplexNum:PartialEq + Zero + One + NumOps{}
That is everything from Num except for from_str_radix. The only place we actually use that method is when implementing it for Complex itself. We might also want to split out NumOps and drop Rem, since that's pretty weird for Complex, and we only use it for our own Rem and for div_trunc.
I think it's also fine if a type only implements Num::from_str_radix for "easy" radices at first, or even an unconditional Err if it's really too hard.
at the moment, all the core arithmetic operations for
Complex
require theNum
bound to be satisfiedhttps://docs.rs/num-complex/latest/num_complex/struct.Complex.html#impl-Add-for-Complex%3CT%3E
this is stronger than it needs to be, and implementing that can be difficult for new numerical types like
qd::Double<f64>
, due to theNum::from_str_radix
being nontrivial to implementwould it be acceptable to relax the constraint to
Add<Output = Self>
for addition,Sub<Output = Self>
for subtraction, andMul<Output = Self> + Add<Output = Self> + Sub<Output = Self>
for multiplication?The text was updated successfully, but these errors were encountered: