wip: misc
This commit is contained in:
parent
9ac271f276
commit
42ccddc12b
2 changed files with 46 additions and 21 deletions
|
|
@ -308,12 +308,6 @@ impl Position {
|
|||
from: Bitboard,
|
||||
to: Bitboard,
|
||||
}
|
||||
impl<const ROLE: u8> MoveGenImpl<ROLE> {
|
||||
#[inline]
|
||||
fn new(role: Role, from: Bitboard, to: Bitboard) -> Self {
|
||||
Self { role, from, to }
|
||||
}
|
||||
}
|
||||
impl<const ROLE: u8> MoveGen<RawMove> for MoveGenImpl<ROLE> {
|
||||
#[inline]
|
||||
fn roles(&self, role: Role) -> bool {
|
||||
|
|
@ -348,7 +342,6 @@ impl Position {
|
|||
to,
|
||||
promotion,
|
||||
} = uci;
|
||||
let role = self.0.role(from).ok_or(InvalidUciMove::Illegal)?;
|
||||
#[inline]
|
||||
fn aux<'l, const ROLE: u8>(
|
||||
position: &'l Position,
|
||||
|
|
@ -356,13 +349,18 @@ impl Position {
|
|||
from: Square,
|
||||
to: Square,
|
||||
) -> Result<Move<'l>, InvalidUciMove> {
|
||||
let mut moves = MoveGenImpl::<ROLE>::new(role, from.bitboard(), to.bitboard());
|
||||
let mut moves = MoveGenImpl::<ROLE> {
|
||||
role,
|
||||
from: from.bitboard(),
|
||||
to: to.bitboard(),
|
||||
};
|
||||
let raw = position
|
||||
.generate_moves(&mut moves)
|
||||
.break_value()
|
||||
.ok_or(InvalidUciMove::Illegal)?;
|
||||
Ok(unsafe { Move::new(position, raw) })
|
||||
}
|
||||
let role = self.0.role(from).ok_or(InvalidUciMove::Illegal)?;
|
||||
let promotion = if role == Role::Pawn {
|
||||
promotion.unwrap_or(Role::Pawn)
|
||||
} else if promotion.is_some() {
|
||||
|
|
@ -381,18 +379,6 @@ impl Position {
|
|||
found: Option<RawMove>,
|
||||
found_other: bool,
|
||||
}
|
||||
impl<const ROLE: u8> MoveGenImpl<ROLE> {
|
||||
#[inline]
|
||||
fn new(role: Role, from: Bitboard, to: Bitboard) -> Self {
|
||||
Self {
|
||||
role,
|
||||
from,
|
||||
to,
|
||||
found: None,
|
||||
found_other: false,
|
||||
}
|
||||
}
|
||||
}
|
||||
impl<const ROLE: u8> MoveGen<Infallible> for MoveGenImpl<ROLE> {
|
||||
#[inline]
|
||||
fn roles(&self, role: Role) -> bool {
|
||||
|
|
@ -466,7 +452,13 @@ impl Position {
|
|||
from: Bitboard,
|
||||
to: Bitboard,
|
||||
) -> Result<Move<'l>, InvalidSan> {
|
||||
let mut moves = MoveGenImpl::<ROLE>::new(role, from, to);
|
||||
let mut moves = MoveGenImpl::<ROLE> {
|
||||
role,
|
||||
from,
|
||||
to,
|
||||
found: None,
|
||||
found_other: false,
|
||||
};
|
||||
let ControlFlow::Continue(()) = position.generate_moves(&mut moves);
|
||||
match moves.found {
|
||||
None => Err(InvalidSan::Illegal),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue