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