gfxmath_vec3/impls/mul/
mulassign.rs

1use crate::Vec3;
2use core::ops::MulAssign;
3
4/// ```
5/// use gfxmath_vec3::Vec3;
6/// 
7/// let mut a = Vec3::<f32>::new(1.5, 2.5, -2.0);
8/// let b = Vec3::<f32>::new(4.0, 2.0,  4.0);
9/// a *= b;
10/// 
11/// assert_eq!( 6.0, a.x);
12/// assert_eq!( 5.0, a.y);
13/// assert_eq!(-8.0, a.z);
14/// 
15/// ```
16#[opimps::impl_ops_assign(MulAssign)]
17#[inline]
18fn mul_assign<T>(self: Vec3<T>, rhs: Vec3<T>) where T: MulAssign<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/// use gfxmath_vec3::Vec3;
29/// 
30/// let mut a = Vec3::<f32>::new(1.5, 2.5, -2.0);
31/// a *= 2.0;
32/// 
33/// assert_eq!( 3.0, a.x);
34/// assert_eq!( 5.0, a.y);
35/// assert_eq!(-4.0, a.z);
36/// 
37/// ```
38#[opimps::impl_op_assign(MulAssign)]
39#[inline]
40fn mul_assign<T>(self: Vec3<T>, rhs: T) where T: MulAssign<T> + Copy {
41    let l = self.as_mut_slice();
42
43    l[0] *= rhs;
44    l[1] *= rhs;
45    l[2] *= rhs;
46}