md_grid 0.2.1

A simple library for storing and iterating through data in a rectangular grid.
Documentation
extern crate grid;
extern crate prettytable;
use grid::Grid;
use std::fmt;

#[derive(Debug, Clone, Copy)]
enum Player {
    White,
    Black
}

impl std::fmt::Display for Player {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        use Player::*;
        match self {
            White => write!(f, "w"),
            Black => write!(f, "b"),
        }
    }
}

#[derive(Debug, Clone, Copy)]
enum Piece {
    Pawn(Player),
    Knight(Player),
    Bishop(Player),
    Rook(Player),
    Queen(Player),
    King(Player),
    None
}

impl std::fmt::Display for Piece {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        use Piece::*;
        match self {
            Pawn(player) => write!(f, "{}P", player),
            Knight(player) => write!(f, "{}N", player),
            Bishop(player) => write!(f, "{}B", player),
            Rook(player) => write!(f, "{}R", player),
            Queen(player) => write!(f, "{}Q", player),
            King(player) => write!(f, "{}K", player),
            None => write!(f, " "),
        }
    }
}

const Empty: Piece = Piece::None;
const WP: Piece = Piece::Pawn(Player::White);
const WN: Piece = Piece::Knight(Player::White);
const WB: Piece = Piece::Bishop(Player::White);
const WR: Piece = Piece::Rook(Player::White);
const WQ: Piece = Piece::Queen(Player::White);
const WK: Piece = Piece::King(Player::White);
const BP: Piece = Piece::Pawn(Player::Black);
const BN: Piece = Piece::Knight(Player::Black);
const BB: Piece = Piece::Bishop(Player::Black);
const BR: Piece = Piece::Rook(Player::Black);
const BQ: Piece = Piece::Queen(Player::Black);
const BK: Piece = Piece::King(Player::Black);

fn main() {
    use Player::*;
    let data = vec![
        vec![BR, BN, BB, BQ, BK, BB, BN, BR],
        vec![BP; 8],
        vec![Empty; 8],
        vec![Empty; 8],
        vec![Empty; 8],
        vec![Empty; 8],
        vec![Empty; 8],
        vec![Empty; 8],
        vec![WP; 8],
        vec![WR, WN, WB, WQ, WK, WB, WN, WR],
    ];
    let grid = Grid::<Piece>::new_from(data);

    // for debugging, you can printout the whole grid
    // via pretty table pkg
    grid.pretty_table().printstd();
}