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}