Skip to main content

vec3_rs/
ops.rs

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}