pub fn parse_algebraic_move( state: &GameState, san: &str, ) -> Result<(usize, usize, Option<PieceType>), String>