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§

§

Up

§

Down

§

Right

§

Left

§

None

Implementations§

source§

impl Direction

source

pub fn opposite(&self) -> Direction

Returns the opposite Direction.

For Direction::None, Direction::None is returned.

Trait Implementations§

source§

impl Clone for Direction

source§

fn clone(&self) -> Direction

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Direction

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl From<Direction> for Vec2

source§

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 Hash for Direction

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl PartialEq<Direction> for Direction

source§

fn eq(&self, other: &Direction) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl TryFrom<Vec2> for Direction

source§

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!
§

type Error = TryFromVec2Error

The type returned in the event of a conversion error.
source§

impl Copy for Direction

source§

impl Eq for Direction

source§

impl StructuralEq for Direction

source§

impl StructuralPartialEq for Direction

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

const: unstable · source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.