gfxmath_vec3/impls/add/
addassign.rs

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