Skip to main content

TurnState

Enum TurnState 

Source
pub enum TurnState {
    P1Turn {
        moves_left: u8,
    },
    P2Turn {
        moves_left: u8,
    },
    GameOver,
}
Expand description

Tracks whose turn it is and how many moves remain in the current turn.

P1’s first placement is hardcoded at (0,0), so the game effectively starts with P2 to move with 2 moves remaining.

Variants§

§

P1Turn

Fields

§moves_left: u8
§

P2Turn

Fields

§moves_left: u8
§

GameOver

Implementations§

Source§

impl TurnState

Source

pub fn current_player(self) -> Option<Player>

Returns the player whose turn it currently is, or None if the game is over.

Source

pub fn moves_remaining(self) -> Option<u8>

Returns how many moves are left in this turn, or None if the game is over.

Source

pub fn advance(self, winner: bool) -> TurnState

Advance the state after a stone placement.

If winner is true, transitions to GameOver. Otherwise, decrements moves_left; when it reaches 0, switches to the other player with moves_left = 2.

Trait Implementations§

Source§

impl Clone for TurnState

Source§

fn clone(&self) -> TurnState

Returns a duplicate 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 TurnState

Source§

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

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

impl PartialEq for TurnState

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for TurnState

Source§

impl Eq for TurnState

Source§

impl StructuralPartialEq for TurnState

Auto Trait Implementations§

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

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

Source§

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

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

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

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 T
where T: Clone,

Source§

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 T
where U: Into<T>,

Source§

type Error = Infallible

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

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

Performs the conversion.
Source§

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

Source§

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

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

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

Performs the conversion.