//! # Example
//! ## Get legals moves and plays some random.
//!
//! The most important struct is Game who has all you need to create and manages go games.
//!
//! ```
//!use crate::goban::rules::*;
//!use crate::goban::rules::game::*;
//!use rand::seq::IteratorRandom;
//! use goban::rules::game_builder::GameBuilder;
//!
//!let mut g = Game::builder()
//! .size((19,19))
//! .rule(Rule::Chinese)
//!// .komi(7.5) Komi is hardcoded for each rule, but can be override like this.
//! .build().unwrap();
//!
//!let mut i = 35;
//!while !g.is_over() && i != 0 {
//! g.play(
//! // legals return an iterator of (x,y) points (lazy)
//! g.legals()
//! .choose(&mut rand::thread_rng())
//! .map(|point| Move::Play(point.0,point.1))
//! .unwrap());
//! i -= 1;
//! g.display_goban();
//! // None if the game is not finished
//! println!("{:?}", g.outcome());
//! // Inner array using row policy
//! println!("{:?}", g.goban().raw());
//!}
//!
//! ```
extern crate bitflags;
extern crate getset;
extern crate lazy_static;