1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
use crate::{Color, Position, TurnColor}; use std::convert::From; impl From<(usize, usize)> for Position { fn from(other: (usize, usize)) -> Self { (&other).into() } } impl From<&(usize, usize)> for Position { fn from(other: &(usize, usize)) -> Self { Self { row: other.0, col: other.1, } } } impl From<Position> for (usize, usize) { fn from(other: Position) -> Self { (other.row, other.col) } } impl From<&Position> for (usize, usize) { fn from(other: &Position) -> Self { (other.row, other.col) } } impl From<TurnColor> for usize { fn from(other: TurnColor) -> Self { (&other).into() } } impl From<&TurnColor> for usize { fn from(other: &TurnColor) -> Self { use TurnColor::*; match other { Red => 0, Blue => 1, Yellow => 2, Green => 3, } } } impl From<usize> for Color { fn from(index: usize) -> Self { use TurnColor::*; Color::Turn(match index { 0 => Red, 1 => Blue, 2 => Yellow, 3 => Green, _ => return Color::Dead(None), }) } }