Make en_passant_square an Option<u8>
This commit is contained in:
11
src/fen.rs
11
src/fen.rs
@@ -101,7 +101,7 @@ fn castling_ability(castling: &str) -> Result<u8, FenError> {
|
||||
|
||||
use std::collections::HashMap;
|
||||
|
||||
fn en_passant_target_square(square: &str) -> Result<u8, FenError> {
|
||||
fn en_passant_target_square(square: &str) -> Result<Option<u8>, FenError> {
|
||||
let mut sqr = square.chars();
|
||||
|
||||
let mut files: HashMap<char, u8> = HashMap::new();
|
||||
@@ -120,14 +120,15 @@ fn en_passant_target_square(square: &str) -> Result<u8, FenError> {
|
||||
|
||||
match sqr.next() {
|
||||
Some(file) if files.contains_key(&file) => match sqr.next() {
|
||||
Some(rank) if ranks.contains_key(&rank) => Ok(ranks.get(&rank).expect("Invalid rank")
|
||||
* 8
|
||||
+ files.get(&file).expect("Invalid file")),
|
||||
Some(rank) if ranks.contains_key(&rank) => Ok(Some(
|
||||
ranks.get(&rank).expect("Invalid rank") * 8
|
||||
+ files.get(&file).expect("Invalid file"),
|
||||
)),
|
||||
Some(_) | None => Err(FenError::from(
|
||||
"Not a valid rank (3 or 6) for an en passant target square",
|
||||
)),
|
||||
},
|
||||
Some('-') => Ok(0),
|
||||
Some('-') => Ok(None),
|
||||
Some(_) | None => Err(FenError::from("Not a file (a..h) or dash (-) character")),
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user