pub enum Direction {
Up,
Down,
Right,
Left,
None,
}
Expand description
The relative directions in a two-dimensional coordinate system, including up, down, left, right, and none.
Variants§
Implementations§
source§impl Direction
impl Direction
sourcepub fn opposite(&self) -> Direction
pub fn opposite(&self) -> Direction
Returns the opposite Direction
.
For Direction::None
, Direction::None
is returned.
Trait Implementations§
source§impl From<Direction> for Vec2
impl From<Direction> for Vec2
source§fn from(value: Direction) -> Self
fn from(value: Direction) -> Self
Converts a Direction
to a unit-length Vec2
in that direction.
Because terminal coordinates begin at the top line, vertical directions are inverted
compared to what you may expect. More information in the example. For Direction::None
, a
zero Vec2
is returned.
Example
In the terminal, y
increases going downward from the top. Therefore, Direction::Up
is a negative vector and Direction::Down
is a positive vector.
let up = Vec2::from(Direction::Up);
let down = Vec2::from(Direction::Down);
assert_eq!(up, Vec2::y(-1));
assert_eq!(down, Vec2::y(1));
source§impl PartialEq<Direction> for Direction
impl PartialEq<Direction> for Direction
source§impl TryFrom<Vec2> for Direction
impl TryFrom<Vec2> for Direction
source§fn try_from(value: Vec2) -> Result<Self, Self::Error>
fn try_from(value: Vec2) -> Result<Self, Self::Error>
Converts a Vec2
to a Direction
.
Because terminal coordinates begin at the top line, vertical directions are inverted compared to what you may expect. For more information, see the example.
Errors
If the given value
is not orthogonal, i.e., one of the components is not zero,
TryFromVec2Error
is returned.
Examples
In the terminal, y
increases going downward from the top. Therefore, Direction::Up
is a negative vector and Direction::Down
is a positive vector.
let negative_y = Direction::try_from(Vec2::y(-1)).unwrap();
let positive_y = Direction::try_from(Vec2::y(1)).unwrap();
assert_eq!(negative_y, Direction::Up);
assert_eq!(positive_y, Direction::Down);
Passing non-orthogonal vectors, that is, vectors that are neither parallel to the x
- or
y
-axis will result in an error.
Direction::try_from(Vec2::xy(1, 1)).unwrap(); // panics!