use crate::motion::{
r2,
se2::{self, Orientation},
};
pub trait MaybeOriented {
fn maybe_oriented(&self) -> Option<Orientation>;
}
pub trait Oriented: MaybeOriented {
fn oriented(&self) -> Orientation {
self.maybe_oriented().unwrap()
}
}
impl MaybeOriented for () {
fn maybe_oriented(&self) -> Option<Orientation> {
None
}
}
impl MaybeOriented for r2::Position {
fn maybe_oriented(&self) -> Option<Orientation> {
None
}
}
impl MaybeOriented for se2::Position {
fn maybe_oriented(&self) -> Option<Orientation> {
Some(self.rotation)
}
}
impl Oriented for se2::Position {}
impl MaybeOriented for usize {
fn maybe_oriented(&self) -> Option<Orientation> {
None
}
}