rstm_core/traits/
convert.rs

1/*
2    Appellation: convert <module>
3    Contrib: FL03 <jo3mccain@icloud.com>
4*/
5use crate::Direction;
6
7/// The [AsDirection] trait provides a convience method for converting a type into a [Direction].
8pub trait AsDirection {
9    fn as_direction(&self) -> Direction;
10}
11/// The [IntoDirection] trait provides a convience method for converting a type into a [Direction].
12pub trait IntoDirection {
13    fn into_direction(self) -> Direction;
14}
15
16/*
17 ************* Implementations *************
18*/
19impl<T> AsDirection for T
20where
21    T: Clone + IntoDirection,
22{
23    fn as_direction(&self) -> Direction {
24        self.clone().into_direction()
25    }
26}
27
28impl<T> IntoDirection for T
29where
30    T: Into<Direction>,
31{
32    fn into_direction(self) -> Direction {
33        self.into()
34    }
35}