#![allow(clippy::use_self)]
use crate::{Vector3, Vector3Coordinate};
use core::ops::{Add, AddAssign, Sub, SubAssign};
impl<T: Vector3Coordinate> Add<Vector3<T>> for Vector3<T> {
type Output = Vector3<T>;
fn add(self, rhs: Vector3<T>) -> Self::Output {
Vector3 {
x: self.x + rhs.x,
y: self.y + rhs.y,
z: self.z + rhs.z,
}
}
}
impl<T: Vector3Coordinate> Sub<Vector3<T>> for Vector3<T> {
type Output = Vector3<T>;
fn sub(self, rhs: Vector3<T>) -> Self::Output {
Vector3 {
x: self.x - rhs.x,
y: self.y - rhs.y,
z: self.z - rhs.z,
}
}
}
impl<T: Vector3Coordinate> AddAssign<Vector3<T>> 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<Vector3<T>> for Vector3<T> {
fn sub_assign(&mut self, rhs: Vector3<T>) {
self.x -= rhs.x;
self.y -= rhs.y;
self.z -= rhs.z;
}
}