diff --git a/core/src/size.rs b/core/src/size.rs index 7c48193576..060f8fa560 100644 --- a/core/src/size.rs +++ b/core/src/size.rs @@ -1,3 +1,4 @@ +use super::vector::Vector; use std::f32; /// An amount of space in 2 dimensions. @@ -57,6 +58,15 @@ impl From<[u16; 2]> for Size { } } +impl From> for Size { + fn from(vector: Vector) -> Self { + Size { + width: vector.x, + height: vector.y, + } + } +} + impl From for [f32; 2] { fn from(size: Size) -> [f32; 2] { [size.width, size.height] diff --git a/core/src/vector.rs b/core/src/vector.rs index def3f8c0c8..fd00b5ba50 100644 --- a/core/src/vector.rs +++ b/core/src/vector.rs @@ -1,3 +1,5 @@ +use super::size::Size; + /// A 2D vector. #[derive(Debug, Clone, Copy, PartialEq)] pub struct Vector { @@ -65,3 +67,24 @@ where } } } + +impl From<[T; 2]> for Vector { + fn from([x, y]: [T; 2]) -> Self { + Self::new(x, y) + } +} + +impl From> for [T; 2] +where + T: Copy, +{ + fn from(other: Vector) -> Self { + [other.x, other.y] + } +} + +impl From for Vector { + fn from(size: Size) -> Self { + Vector::new(size.width, size.height) + } +}