Trait kas_core::dir::Directional

source ·
pub trait Directional: Copy + Sized + Debug + 'static {
    type Flipped: Directional;
    type Reversed: Directional;

    // Required methods
    fn flipped(self) -> Self::Flipped;
    fn reversed(self) -> Self::Reversed;
    fn as_direction(self) -> Direction;

    // Provided methods
    fn is_vertical(self) -> bool { ... }
    fn is_horizontal(self) -> bool { ... }
    fn is_reversed(self) -> bool { ... }
}
Expand description

Trait over directional types

This trait has a variable implementation, Direction, and several fixed implementations, Right, Down, Left and Up.

Using a generic <D: Directional> allows compile-time substitution of direction information when parametrised with fixed implementations.

Required Associated Types§

source

type Flipped: Directional

Direction flipped over diagonal (i.e. Down ↔ Right)

This allows compile-time selection of the flipped direction.

source

type Reversed: Directional

Direction reversed along axis (i.e. Left ↔ Right)

This allows compile-time selection of the reversed direction.

Required Methods§

source

fn flipped(self) -> Self::Flipped

Flip over diagonal (i.e. Down ↔ Right)

source

fn reversed(self) -> Self::Reversed

Reverse along axis (i.e. Left ↔ Right)

source

fn as_direction(self) -> Direction

Convert to the Direction enum

Provided Methods§

source

fn is_vertical(self) -> bool

Up or Down

source

fn is_horizontal(self) -> bool

Left or Right

source

fn is_reversed(self) -> bool

Left or Up

Object Safety§

This trait is not object safe.

Implementors§