gfxmath_vec4/impls/add/addassign.rs
1use crate::Vec4;
2use std::ops::AddAssign;
3
4///
5/// ```
6/// use gfxmath_vec4::Vec4;
7///
8/// let mut a = Vec4::new(1.0, 2.0, 3.0, 4.0);
9/// let b = Vec4::all(3.0);
10///
11/// a += b;
12///
13/// assert_eq!(4.0, a.x);
14/// assert_eq!(5.0, a.y);
15/// assert_eq!(6.0, a.z);
16/// assert_eq!(7.0, a.w);
17/// ```
18#[opimps::impl_ops_assign(AddAssign)]
19fn add_assign<T>(self: Vec4<T>, rhs: Vec4<T>) where T: AddAssign<T> + Copy {
20 let l = self.as_mut_slice();
21 let r = rhs.as_slice();
22
23 l[0] += r[0];
24 l[1] += r[1];
25 l[2] += r[2];
26 l[3] += r[3];
27}
28
29
30///
31/// ```
32/// use gfxmath_vec4::Vec4;
33/// let mut a = Vec4::new(1.0, 2.0, 3.0, 8.0);
34/// a += 4.0;
35///
36/// assert_eq!(5.0, a.x);
37/// assert_eq!(6.0, a.y);
38/// assert_eq!(7.0, a.z);
39/// assert_eq!(12.0, a.w);
40/// ```
41#[opimps::impl_op_assign(AddAssign)]
42#[inline]
43fn add_assign<T>(self: Vec4<T>, rhs: T) where T: AddAssign<T> + Copy {
44 let l = self.as_mut_slice();
45
46 l[0] += rhs;
47 l[1] += rhs;
48 l[2] += rhs;
49 l[3] += rhs;
50}