Holy heck I went on a *journey* here. Ultimately, I needed to implement my own index-based iterator instead of using the Vec's Iterator. This type establishes some patterns I want to carry forward to other move generators. 1. The use of a Parameters struct to fully parameterize the move generation per-color. That lets these types only need a single color-based branch 2. A list of move lists, one list for each of captures, promotions, and quiet moves. 3. An index-based move iterator. 4. Separate impl for generating bitboard representations of these moves Additional changes: - Implement BitBoard::from_square() - Implement a Square::e5() for tests This class doesn't implement en passant yet. It also doesn't yet have tests for the bitboard stuff. |
||
---|---|---|
.. | ||
src | ||
Cargo.lock | ||
Cargo.toml |