@@ -15,7 +15,7 @@ use size::TypedSize2D;
15
15
use num:: * ;
16
16
use num_traits:: { Float , NumCast } ;
17
17
use std:: fmt;
18
- use std:: ops:: { Add , Neg , Mul , Sub , Div } ;
18
+ use std:: ops:: { Add , Neg , Mul , Sub , Div , AddAssign } ;
19
19
use std:: marker:: PhantomData ;
20
20
21
21
define_matrix ! {
@@ -129,6 +129,12 @@ impl<T: Copy + Add<T, Output=T>, U> Add for TypedPoint2D<T, U> {
129
129
}
130
130
}
131
131
132
+ impl < T : Copy + Add < T , Output =T > , U > AddAssign for TypedPoint2D < T , U > {
133
+ fn add_assign ( & mut self , other : TypedPoint2D < T , U > ) {
134
+ * self = * self + other
135
+ }
136
+ }
137
+
132
138
impl < T : Copy + Add < T , Output =T > , U > Add < TypedSize2D < T , U > > for TypedPoint2D < T , U > {
133
139
type Output = TypedPoint2D < T , U > ;
134
140
fn add ( self , other : TypedSize2D < T , U > ) -> TypedPoint2D < T , U > {
@@ -888,6 +894,14 @@ mod typedpoint2d {
888
894
assert_eq ! ( result, Point2DMm :: new( 4.0 , 6.0 ) ) ;
889
895
}
890
896
897
+ #[ test]
898
+ pub fn test_add_assign ( ) {
899
+ let mut p1 = Point2DMm :: new ( 1.0 , 2.0 ) ;
900
+ p1 += Point2DMm :: new ( 3.0 , 4.0 ) ;
901
+
902
+ assert_eq ! ( p1, Point2DMm :: new( 4.0 , 6.0 ) ) ;
903
+ }
904
+
891
905
#[ test]
892
906
pub fn test_scalar_mul ( ) {
893
907
let p1 = Point2DMm :: new ( 1.0 , 2.0 ) ;
0 commit comments