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}