[][src]Enum gridly::direction::Direction

pub enum Direction {
    Up,
    Down,
    Left,
    Right,
}

The four cardinal directions (up, down, left, right). Direction implements a number of simple helper methods. It also implements VectorLike, which allows it to be used in contexts where a Vector can be used as a unit vector in the given direction.

Variants

Up

The negative row direction

Down

The positive row direction

Left

The negative column direction

Right

The positive column direction

Methods

impl Direction[src]

pub fn sized_vec(self, length: isize) -> Vector[src]

Return a vector with the given length in this direction

Example:

use gridly::prelude::*;

assert_eq!(Up.sized_vec(2), Vector::new(-2, 0));
assert_eq!(Down.sized_vec(3), Vector::new(3, 0));
assert_eq!(Left.sized_vec(1), Vector::new(0, -1));
assert_eq!(Right.sized_vec(5), Vector::new(0, 5));

pub fn unit_vec(self) -> Vector[src]

Return the unit vector in the given direction.

Example:

use gridly::prelude::*;

assert_eq!(Up.unit_vec(), Vector::new(-1, 0));
assert_eq!(Down.unit_vec(), Vector::new(1, 0));
assert_eq!(Left.unit_vec(), Vector::new(0, -1));
assert_eq!(Right.unit_vec(), Vector::new(0, 1));

pub fn is_vertical(self) -> bool[src]

True if this is Up or Down

Example:

use gridly::direction::*;

assert!(Up.is_vertical());
assert!(Down.is_vertical());
assert!(!Left.is_vertical());
assert!(!Right.is_vertical());

pub fn is_horizontal(self) -> bool[src]

True if this is Left or Right

Example:

use gridly::direction::*;

assert!(!Up.is_horizontal());
assert!(!Down.is_horizontal());
assert!(Left.is_horizontal());
assert!(Right.is_horizontal());

pub fn reverse(self) -> Direction[src]

Reverse this direction (Up -> Down, etc)

use gridly::direction::*;

assert_eq!(Up.reverse(), Down);
assert_eq!(Down.reverse(), Up);
assert_eq!(Left.reverse(), Right);
assert_eq!(Right.reverse(), Left);

pub fn clockwise(self) -> Direction[src]

Rotate this direction clockwise

Example:

use gridly::direction::*;

assert_eq!(Up.clockwise(), Right);
assert_eq!(Down.clockwise(), Left);
assert_eq!(Left.clockwise(), Up);
assert_eq!(Right.clockwise(), Down);

pub fn anticlockwise(self) -> Direction[src]

Rotate this direction counterclockwise

Example:

use gridly::direction::*;

assert_eq!(Up.anticlockwise(), Left);
assert_eq!(Down.anticlockwise(), Right);
assert_eq!(Left.anticlockwise(), Down);
assert_eq!(Right.anticlockwise(), Up);

Trait Implementations

impl VectorLike for Direction[src]

A Direction acts like a unit vector in the given direction

impl Eq for Direction[src]

impl Clone for Direction[src]

impl PartialEq<Direction> for Direction[src]

impl Copy for Direction[src]

impl Hash for Direction[src]

impl<T: VectorLike> Add<T> for Direction[src]

Adding a Vector to a Direction is equivelent to adding it to a unit vector in the given direction

Example:

use gridly::vector::Vector;
use gridly::direction::*;

let base = Vector::new(3, 4);

assert_eq!(Up + base, Vector::new(2, 4));
assert_eq!(Down + base, Vector::new(4, 4));
assert_eq!(Right + base, Vector::new(3, 5));
assert_eq!(Left + base, Vector::new(3, 3));

type Output = Vector

The resulting type after applying the + operator.

impl<T: VectorLike> Sub<T> for Direction[src]

Subtracting a Vector from a Direction is equivelent to subtracing it from a unit vector in the given direction

Example:

use gridly::vector::Vector;
use gridly::direction::*;

let base = Vector::new(0, 0);

assert_eq!(Up - base, Vector::new(-1, 0));
assert_eq!(Down - base, Vector::new(1, 0));
assert_eq!(Right - base, Vector::new(0, 1));
assert_eq!(Left - base, Vector::new(0, -1));

type Output = Vector

The resulting type after applying the - operator.

impl Mul<isize> for Direction[src]

Multiplying a Direction by an isize produces a Vector of the given length in the given direction

Example:

use gridly::direction::*;
use gridly::vector::Vector;

assert_eq!(Up * 5, Vector::new(-5, 0));
assert_eq!(Down * 3, Vector::new(3, 0));
assert_eq!(Left * 2, Vector::new(0, -2));
assert_eq!(Right * 4, Vector::new(0, 4));

type Output = Vector

The resulting type after applying the * operator.

impl Neg for Direction[src]

Negating a Direction reverses it

Example:

use gridly::direction::*;

assert_eq!(-Up, Down);
assert_eq!(-Down, Up);
assert_eq!(-Left, Right);
assert_eq!(-Right, Left);

type Output = Direction

The resulting type after applying the - operator.

impl Debug for Direction[src]

Auto Trait Implementations

Blanket Implementations

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> From<T> for T[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]