From 9090fa6a22afcc41d191ad35947ab312bf95918e Mon Sep 17 00:00:00 2001
From: Jakub Hlusička <jakub.hlusicka@email.cz>
Date: Wed, 28 Oct 2020 02:36:49 +0100
Subject: Add conversion functions to Size and Vector

---
 core/src/size.rs   | 10 ++++++++++
 core/src/vector.rs | 23 +++++++++++++++++++++++
 2 files changed, 33 insertions(+)

diff --git a/core/src/size.rs b/core/src/size.rs
index 7c481935..060f8fa5 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<Vector<f32>> for Size {
+    fn from(vector: Vector<f32>) -> Self {
+        Size {
+            width: vector.x,
+            height: vector.y,
+        }
+    }
+}
+
 impl From<Size> 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 def3f8c0..fd00b5ba 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<T = f32> {
@@ -65,3 +67,24 @@ where
         }
     }
 }
+
+impl<T> From<[T; 2]> for Vector<T> {
+    fn from([x, y]: [T; 2]) -> Self {
+        Self::new(x, y)
+    }
+}
+
+impl<T> From<Vector<T>> for [T; 2]
+where
+    T: Copy,
+{
+    fn from(other: Vector<T>) -> Self {
+        [other.x, other.y]
+    }
+}
+
+impl From<Size> for Vector<f32> {
+    fn from(size: Size) -> Self {
+        Vector::new(size.width, size.height)
+    }
+}
-- 
cgit 


From 16646ffc4172ffb7b1a6ad0f50afe826ddcf4094 Mon Sep 17 00:00:00 2001
From: Jakub Hlusička <limeth@protonmail.com>
Date: Thu, 29 Oct 2020 14:50:17 +0100
Subject: Apply suggestions

---
 core/src/size.rs   | 8 +++++++-
 core/src/vector.rs | 8 --------
 2 files changed, 7 insertions(+), 9 deletions(-)

diff --git a/core/src/size.rs b/core/src/size.rs
index 060f8fa5..5c130978 100644
--- a/core/src/size.rs
+++ b/core/src/size.rs
@@ -1,4 +1,4 @@
-use super::vector::Vector;
+use crate::Vector;
 use std::f32;
 
 /// An amount of space in 2 dimensions.
@@ -72,3 +72,9 @@ impl From<Size> for [f32; 2] {
         [size.width, size.height]
     }
 }
+
+impl From<Size> for Vector<f32> {
+    fn from(size: Size) -> Self {
+        Vector::new(size.width, size.height)
+    }
+}
diff --git a/core/src/vector.rs b/core/src/vector.rs
index fd00b5ba..e31924e7 100644
--- a/core/src/vector.rs
+++ b/core/src/vector.rs
@@ -1,5 +1,3 @@
-use super::size::Size;
-
 /// A 2D vector.
 #[derive(Debug, Clone, Copy, PartialEq)]
 pub struct Vector<T = f32> {
@@ -82,9 +80,3 @@ where
         [other.x, other.y]
     }
 }
-
-impl From<Size> for Vector<f32> {
-    fn from(size: Size) -> Self {
-        Vector::new(size.width, size.height)
-    }
-}
-- 
cgit