1use crate::{Vector3, Vector3Coordinate};
2use core::ops::{Add, AddAssign, Sub, SubAssign};
3
4impl<T: Vector3Coordinate> Add<Self> for Vector3<T> {
5 type Output = Self;
6 fn add(self, rhs: Self) -> Self::Output {
7 Self {
8 x: self.x + rhs.x,
9 y: self.y + rhs.y,
10 z: self.z + rhs.z,
11 }
12 }
13}
14
15impl<T: Vector3Coordinate> Sub<Self> for Vector3<T> {
16 type Output = Self;
17 fn sub(self, rhs: Self) -> Self::Output {
18 Self {
19 x: self.x - rhs.x,
20 y: self.y - rhs.y,
21 z: self.z - rhs.z,
22 }
23 }
24}
25
26impl<T: Vector3Coordinate> AddAssign<Self> for Vector3<T> {
27 fn add_assign(&mut self, rhs: Self) {
28 self.x += rhs.x;
29 self.y += rhs.y;
30 self.z += rhs.z;
31 }
32}
33
34impl<T: Vector3Coordinate> SubAssign<Self> for Vector3<T> {
35 fn sub_assign(&mut self, rhs: Self) {
36 self.x -= rhs.x;
37 self.y -= rhs.y;
38 self.z -= rhs.z;
39 }
40}