use std::convert::From;
mod lib {
pub enum TicTacToeCharacter {
X,
O,
}
type OptionalTicTacToeCharacter = Option<TicTacToeCharacter>;
type OptionalRowOfOptionalTicTacToeCharacters = Option<(
OptionalTicTacToeCharacter,
OptionalTicTacToeCharacter,
OptionalTicTacToeCharacter,
)>;
type TicTacToeBoard = Option<(
OptionalRowOfOptionalTicTacToeCharacters,
OptionalRowOfOptionalTicTacToeCharacters,
OptionalRowOfOptionalTicTacToeCharacters,
)>;
pub struct TicTacToe {
state: TicTacToeBoard,
turn: TicTacToeCharacter,
}
impl TicTacToe {
fn new(state: TicTacToeBoard, turn: TicTacToeCharacter) -> Option<Self> {
match (state, turn) {
(None, TicTacToeCharacter::X) => Some(TicTacToe {
state: None,
turn: TicTacToeCharacter::X,
}),
(None, TicTacToeCharacter::O) => None,
_ => Some(TicTacToe { state, turn }),
}
}
}
}
fn main() {
println!("Hello world!");
}
#[cfg(test)]
mod tests {
use super::lib::*;
#[test]
fn new_empty_with_o_turn_should_not_be_ok() {}
}
Gives the error on line 31: use of moved value state
, and the same with turn
.