064846a4fd
Add naive king move generation
2024-04-01 12:21:33 +01:00
7ccca5a593
Remove spurious links in 'Square' documentation
2024-04-01 12:21:33 +01:00
a4952376a1
Remove spurious links in 'Bitboard' documentation
2024-04-01 12:21:33 +01:00
34b9c18ca5
Add 'Bitboard::iter_powerset'
2024-04-01 12:21:33 +01:00
1ea4cd0ea4
Add 'Piece' enum
2024-04-01 12:21:33 +01:00
42126e1c88
Add 'NUM_VARIANTS' constant to all 'board' enums
2024-04-01 12:21:33 +01:00
3f93417092
Consistently use 'Self' type in 'impl' blocks
2024-04-01 12:21:33 +01:00
568c369683
Fix typo in 'board::Color' documentation
2024-04-01 12:21:33 +01:00
f405246127
Add 'Color::slide_board_with_blockers'
2024-04-01 12:21:33 +01:00
6e871dbfe6
Improve 'board::BitboardIterator'
...
* Accurate 'size_hint'.
* Exact size.
* Fused iterator (keeps returning 'None' after returning 'None' once).
2024-04-01 12:21:33 +01:00
c571b53840
Add 'Color::{forward,backward}_direction'
2024-04-01 12:21:33 +01:00
04ef282815
Add 'CastleRights::unmoved_rooks'
2024-04-01 12:21:33 +01:00
96b9e0f6d7
Add 'CastleRights::without_{king,queen}_side'
2024-04-01 12:21:33 +01:00
d8e003ef94
Add 'CastleRights::has_{king,queen}_side'
2024-04-01 12:21:33 +01:00
688b624dd1
Add 'CastleRights' enum
2024-04-01 12:21:33 +01:00
3553428bb9
Add 'Color' enum
2024-04-01 12:21:33 +01:00
ffaad7b7d4
Rename 'board::direction{s,}'
2024-04-01 12:21:33 +01:00
a6f4e7e686
Statically assert zero-cost invariants
...
Since some or all of those invariants will come in handy to ensure we
use as little memory as possible, to maximize the speed of the move
generation later on.
2024-04-01 12:21:33 +01:00
accbbef64e
Add 'static_assert' macro
2024-04-01 12:21:33 +01:00
c6916cc21a
Add 'Bitboard::{LIGHT,DARK}_SQUARES
2024-04-01 12:21:33 +01:00
5a9f0db1b9
Make use of 'Bitboard::is_empty'
2024-04-01 12:21:33 +01:00
63058f6c4a
Add 'Bitboard::is_empty'
2024-04-01 12:21:33 +01:00
eba64a98d4
Add 'Direction::slide_{square,board}'
2024-04-01 12:21:33 +01:00
5ef6e545f3
Add 'Bitboard::{ANTI_,}DIAGONAL'
2024-04-01 12:21:33 +01:00
21eecbdac9
Add 'Direction::move_square'
2024-04-01 12:21:33 +01:00
be3a8030a7
Add 'Direction::iter_{rook,bishop,royalty,knight}'
2024-04-01 12:21:33 +01:00
d03e251050
Add 'Direction::move_board'
...
Encapsulates the way to move a piece on a board, avoiding the need to
mask and shift by hand.
2024-04-01 12:21:33 +01:00
c95d7f078a
Add 'board::Direction' enum
2024-04-01 12:21:33 +01:00
8e2b7c1714
Use 'Square::index' in 'Square::{file,rank}_index'
2024-04-01 12:21:33 +01:00
be5d2831bd
Add 'Square::index'
2024-04-01 12:21:33 +01:00
93d5fe97ed
Add 'Bitboard::count'
2024-04-01 12:21:33 +01:00
e48994e7be
Add 'Rank::{up,down}'
2024-04-01 12:21:33 +01:00
1c4a093837
Add 'File::{left,right}'
2024-04-01 12:21:33 +01:00
f873b64f15
Add 'Square' constructor from 'File', 'Rank'
2024-04-01 12:21:33 +01:00
47e4e77f6c
Don't return 'Bitboard' from 'Square::{file,rank}'
2024-04-01 12:21:33 +01:00
9678180c75
Add 'File' enum
2024-04-01 12:21:33 +01:00
5a35c55091
Add 'Rank' enum
2024-04-01 12:21:33 +01:00
1c78574882
Add GDB pretty-printers
2024-04-01 12:21:33 +01:00
d8f4057a8c
Introduce 'Bitboard::ALL'
2024-03-29 01:06:14 +00:00
1235e4a51c
Add bitboard iteration
...
Introduce 'BitboardIterator', use it to implement 'IntoIterator' for
'Bitboard'.
2024-03-29 01:06:14 +00:00
afec72d646
Move 'board::bitboard' into folder module
...
I will be adding a 'BitboardIterator' type, and it makes more sense to
use a folder for this module at this point.
2024-03-29 01:06:14 +00:00
98efd390a6
Add 'Bitboard' and 'Square' definitions
2024-03-29 01:06:14 +00:00
0d94438b46
Move binary crate into 'bin' folder
2024-03-28 20:31:45 +00:00
65a0939d53
Bootstrap project
2024-03-28 20:30:43 +00:00