mod concat;
mod offset;
mod reverse;
pub use concat::Concat;
pub use offset::Offset;
pub use reverse::Reverse;
use crate::{Heading, Path, Tangent};
pub trait PathExt: Path + Sized {
fn reverse(self) -> Reverse<Self>;
fn concat<Q>(self, other: Q) -> Concat<Self, Q>
where
Q: Path<Scalar = Self::Scalar, Point = Self::Point, Error = Self::Error>;
fn offset(self, d: Self::Scalar) -> Offset<Self, Self::Scalar>
where
Self: Tangent + Heading;
}
impl<P: Path + Sized> PathExt for P {
fn reverse(self) -> Reverse<Self> {
Reverse::new(self)
}
fn concat<Q>(self, other: Q) -> Concat<Self, Q>
where
Q: Path<Scalar = Self::Scalar, Point = Self::Point, Error = Self::Error>,
{
Concat::new(self, other)
}
fn offset(self, d: Self::Scalar) -> Offset<Self, Self::Scalar>
where
Self: Tangent + Heading,
{
Offset::new(self, d)
}
}