use crate::{Vector3, Vector3Coordinate};
use core::ops::{Add, AddAssign, Sub, SubAssign};
impl<T: Vector3Coordinate> Add<Self> for Vector3<T> {
type Output = Self;
fn add(self, rhs: Self) -> Self::Output {
Self {
x: self.x + rhs.x,
y: self.y + rhs.y,
z: self.z + rhs.z,
}
}
}
impl<T: Vector3Coordinate> Sub<Self> for Vector3<T> {
type Output = Self;
fn sub(self, rhs: Self) -> Self::Output {
Self {
x: self.x - rhs.x,
y: self.y - rhs.y,
z: self.z - rhs.z,
}
}
}
impl<T: Vector3Coordinate> AddAssign<Self> for Vector3<T> {
fn add_assign(&mut self, rhs: Self) {
self.x += rhs.x;
self.y += rhs.y;
self.z += rhs.z;
}
}
impl<T: Vector3Coordinate> SubAssign<Self> for Vector3<T> {
fn sub_assign(&mut self, rhs: Self) {
self.x -= rhs.x;
self.y -= rhs.y;
self.z -= rhs.z;
}
}