1
0
Fork 0
2022/src/vector2d.rs

35 lines
594 B
Rust
Raw Normal View History

use std::cmp::Eq;
use std::hash::Hash;
use std::ops::Add;
#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
pub struct Vector2D<T> {
x: T,
y: T,
}
impl<T> Vector2D<T> {
pub fn new(x: T, y: T) -> Vector2D<T> {
Vector2D { x, y }
}
pub fn x(&self) -> &T {
&self.x
}
pub fn y(&self) -> &T {
&self.y
}
}
impl<T: Add + Add<Output = U>, U> Add for Vector2D<T> {
type Output = Vector2D<U>;
fn add(self, rhs: Self) -> Self::Output {
Vector2D {
x: self.x + rhs.x,
y: self.y + rhs.y,
}
}
}