Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

+Debug for CoordinateType #602

Merged
merged 12 commits into from
Jan 13, 2021
32 changes: 16 additions & 16 deletions geo-types/src/coordinate.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use crate::{CoordinateType, Point};
use crate::{CoordNum, Point};

#[cfg(any(feature = "approx", test))]
use approx::{AbsDiffEq, RelativeEq, UlpsEq};
Expand Down Expand Up @@ -27,13 +27,13 @@ use approx::{AbsDiffEq, RelativeEq, UlpsEq};
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct Coordinate<T>
where
T: CoordinateType,
T: CoordNum,
{
pub x: T,
pub y: T,
}

impl<T: CoordinateType> From<(T, T)> for Coordinate<T> {
impl<T: CoordNum> From<(T, T)> for Coordinate<T> {
fn from(coords: (T, T)) -> Self {
Coordinate {
x: coords.0,
Expand All @@ -42,7 +42,7 @@ impl<T: CoordinateType> From<(T, T)> for Coordinate<T> {
}
}

impl<T: CoordinateType> From<[T; 2]> for Coordinate<T> {
impl<T: CoordNum> From<[T; 2]> for Coordinate<T> {
fn from(coords: [T; 2]) -> Self {
Coordinate {
x: coords[0],
Expand All @@ -51,7 +51,7 @@ impl<T: CoordinateType> From<[T; 2]> for Coordinate<T> {
}
}

impl<T: CoordinateType> From<Point<T>> for Coordinate<T> {
impl<T: CoordNum> From<Point<T>> for Coordinate<T> {
fn from(point: Point<T>) -> Self {
Coordinate {
x: point.x(),
Expand All @@ -62,7 +62,7 @@ impl<T: CoordinateType> From<Point<T>> for Coordinate<T> {

impl<T> Coordinate<T>
where
T: CoordinateType,
T: CoordNum,
{
/// Returns a tuple that contains the x/horizontal & y/vertical component of the coordinate.
///
Expand Down Expand Up @@ -102,7 +102,7 @@ use std::ops::{Add, Div, Mul, Neg, Sub};
/// ```
impl<T> Neg for Coordinate<T>
where
T: CoordinateType + Neg<Output = T>,
T: CoordNum + Neg<Output = T>,
{
type Output = Coordinate<T>;

Expand All @@ -127,7 +127,7 @@ where
/// ```
impl<T> Add for Coordinate<T>
where
T: CoordinateType,
T: CoordNum,
{
type Output = Coordinate<T>;

Expand All @@ -152,7 +152,7 @@ where
/// ```
impl<T> Sub for Coordinate<T>
where
T: CoordinateType,
T: CoordNum,
{
type Output = Coordinate<T>;

Expand All @@ -176,7 +176,7 @@ where
/// ```
impl<T> Mul<T> for Coordinate<T>
where
T: CoordinateType,
T: CoordNum,
{
type Output = Coordinate<T>;

Expand All @@ -200,7 +200,7 @@ where
/// ```
impl<T> Div<T> for Coordinate<T>
where
T: CoordinateType,
T: CoordNum,
{
type Output = Coordinate<T>;

Expand All @@ -223,7 +223,7 @@ use num_traits::Zero;
/// assert_eq!(p.x, 0.);
/// assert_eq!(p.y, 0.);
/// ```
impl<T: CoordinateType> Coordinate<T> {
impl<T: CoordNum> Coordinate<T> {
pub fn zero() -> Self {
Coordinate {
x: T::zero(),
Expand All @@ -232,7 +232,7 @@ impl<T: CoordinateType> Coordinate<T> {
}
}

impl<T: CoordinateType> Zero for Coordinate<T> {
impl<T: CoordNum> Zero for Coordinate<T> {
fn zero() -> Self {
Coordinate::zero()
}
Expand All @@ -242,7 +242,7 @@ impl<T: CoordinateType> Zero for Coordinate<T> {
}

#[cfg(any(feature = "approx", test))]
impl<T: CoordinateType + AbsDiffEq> AbsDiffEq for Coordinate<T>
impl<T: CoordNum + AbsDiffEq> AbsDiffEq for Coordinate<T>
where
T::Epsilon: Copy,
{
Expand All @@ -260,7 +260,7 @@ where
}

#[cfg(any(feature = "approx", test))]
impl<T: CoordinateType + RelativeEq> RelativeEq for Coordinate<T>
impl<T: CoordNum + RelativeEq> RelativeEq for Coordinate<T>
where
T::Epsilon: Copy,
{
Expand All @@ -277,7 +277,7 @@ where
}

#[cfg(any(feature = "approx", test))]
impl<T: CoordinateType + UlpsEq> UlpsEq for Coordinate<T>
impl<T: CoordNum + UlpsEq> UlpsEq for Coordinate<T>
where
T::Epsilon: Copy,
{
Expand Down
62 changes: 20 additions & 42 deletions geo-types/src/geometry.rs
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
use crate::{
CoordinateType, GeometryCollection, Line, LineString, MultiLineString, MultiPoint,
MultiPolygon, Point, Polygon, Rect, Triangle,
CoordNum, GeometryCollection, Line, LineString, MultiLineString, MultiPoint, MultiPolygon,
Point, Polygon, Rect, Triangle,
};
use num_traits::Float;
use std::convert::TryFrom;
use std::error::Error;
use std::fmt;
Expand All @@ -26,7 +25,7 @@ use std::fmt;
#[derive(Eq, PartialEq, Clone, Debug, Hash)]
pub enum Geometry<T>
where
T: CoordinateType,
T: CoordNum,
{
Point(Point<T>),
Line(Line<T>),
Expand All @@ -40,55 +39,55 @@ where
Triangle(Triangle<T>),
}

impl<T: CoordinateType> From<Point<T>> for Geometry<T> {
impl<T: CoordNum> From<Point<T>> for Geometry<T> {
fn from(x: Point<T>) -> Geometry<T> {
Geometry::Point(x)
}
}
impl<T: CoordinateType> From<Line<T>> for Geometry<T> {
impl<T: CoordNum> From<Line<T>> for Geometry<T> {
fn from(x: Line<T>) -> Geometry<T> {
Geometry::Line(x)
}
}
impl<T: CoordinateType> From<LineString<T>> for Geometry<T> {
impl<T: CoordNum> From<LineString<T>> for Geometry<T> {
fn from(x: LineString<T>) -> Geometry<T> {
Geometry::LineString(x)
}
}
impl<T: CoordinateType> From<Polygon<T>> for Geometry<T> {
impl<T: CoordNum> From<Polygon<T>> for Geometry<T> {
fn from(x: Polygon<T>) -> Geometry<T> {
Geometry::Polygon(x)
}
}
impl<T: CoordinateType> From<MultiPoint<T>> for Geometry<T> {
impl<T: CoordNum> From<MultiPoint<T>> for Geometry<T> {
fn from(x: MultiPoint<T>) -> Geometry<T> {
Geometry::MultiPoint(x)
}
}
impl<T: CoordinateType> From<MultiLineString<T>> for Geometry<T> {
impl<T: CoordNum> From<MultiLineString<T>> for Geometry<T> {
fn from(x: MultiLineString<T>) -> Geometry<T> {
Geometry::MultiLineString(x)
}
}
impl<T: CoordinateType> From<MultiPolygon<T>> for Geometry<T> {
impl<T: CoordNum> From<MultiPolygon<T>> for Geometry<T> {
fn from(x: MultiPolygon<T>) -> Geometry<T> {
Geometry::MultiPolygon(x)
}
}

impl<T: CoordinateType> From<Rect<T>> for Geometry<T> {
impl<T: CoordNum> From<Rect<T>> for Geometry<T> {
fn from(x: Rect<T>) -> Geometry<T> {
Geometry::Rect(x)
}
}

impl<T: CoordinateType> From<Triangle<T>> for Geometry<T> {
impl<T: CoordNum> From<Triangle<T>> for Geometry<T> {
fn from(x: Triangle<T>) -> Geometry<T> {
Geometry::Triangle(x)
}
}

impl<T: CoordinateType> Geometry<T> {
impl<T: CoordNum> Geometry<T> {
/// If this Geometry is a Point, then return that, else None.
///
/// # Examples
Expand Down Expand Up @@ -198,10 +197,7 @@ impl Error for FailedToConvertError {
}
}

impl<T> TryFrom<Geometry<T>> for Point<T>
where
T: Float,
{
impl<T: CoordNum> TryFrom<Geometry<T>> for Point<T> {
type Error = FailedToConvertError;

fn try_from(geom: Geometry<T>) -> Result<Point<T>, Self::Error> {
Expand All @@ -212,10 +208,7 @@ where
}
}

impl<T> TryFrom<Geometry<T>> for Line<T>
where
T: Float,
{
impl<T: CoordNum> TryFrom<Geometry<T>> for Line<T> {
type Error = FailedToConvertError;

fn try_from(geom: Geometry<T>) -> Result<Line<T>, Self::Error> {
Expand All @@ -226,10 +219,7 @@ where
}
}

impl<T> TryFrom<Geometry<T>> for LineString<T>
where
T: Float,
{
impl<T: CoordNum> TryFrom<Geometry<T>> for LineString<T> {
type Error = FailedToConvertError;

fn try_from(geom: Geometry<T>) -> Result<LineString<T>, Self::Error> {
Expand All @@ -240,10 +230,7 @@ where
}
}

impl<T> TryFrom<Geometry<T>> for Polygon<T>
where
T: Float,
{
impl<T: CoordNum> TryFrom<Geometry<T>> for Polygon<T> {
type Error = FailedToConvertError;

fn try_from(geom: Geometry<T>) -> Result<Polygon<T>, Self::Error> {
Expand All @@ -254,10 +241,7 @@ where
}
}

impl<T> TryFrom<Geometry<T>> for MultiPoint<T>
where
T: Float,
{
impl<T: CoordNum> TryFrom<Geometry<T>> for MultiPoint<T> {
type Error = FailedToConvertError;

fn try_from(geom: Geometry<T>) -> Result<MultiPoint<T>, Self::Error> {
Expand All @@ -268,10 +252,7 @@ where
}
}

impl<T> TryFrom<Geometry<T>> for MultiLineString<T>
where
T: Float,
{
impl<T: CoordNum> TryFrom<Geometry<T>> for MultiLineString<T> {
type Error = FailedToConvertError;

fn try_from(geom: Geometry<T>) -> Result<MultiLineString<T>, Self::Error> {
Expand All @@ -282,10 +263,7 @@ where
}
}

impl<T> TryFrom<Geometry<T>> for MultiPolygon<T>
where
T: Float,
{
impl<T: CoordNum> TryFrom<Geometry<T>> for MultiPolygon<T> {
type Error = FailedToConvertError;

fn try_from(geom: Geometry<T>) -> Result<MultiPolygon<T>, Self::Error> {
Expand Down
Loading