mathie 0.6.0

A rust math type library.
Documentation
use serde::{Deserialize, Deserializer, Serialize, Serializer};
use crate::{Number, Rect, Vec2};

impl<T: Number + Serialize> Serialize for Rect<T> {
	fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: Serializer {
		(&self.origin, &self.size).serialize(serializer)
	}
}

impl<T: Number + Serialize> Serialize for Vec2<T> {
	fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: Serializer {
		(&self.x(), &self.y()).serialize(serializer)
	}
}

impl<'de, T: Number + Deserialize<'de>> Deserialize<'de> for Rect<T> {
	fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: Deserializer<'de> {
		let (origin, size) = Deserialize::deserialize(deserializer)?;
		Ok(Rect {
			origin,
			size
		})
	}
}

impl<'de, T: Number + Deserialize<'de>> Deserialize<'de> for Vec2<T> {
	fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: Deserializer<'de> {
		let (x, y) = Deserialize::deserialize(deserializer)?;
		Ok(Vec2([x, y]))
	}
}