Add serialization to String
This commit is contained in:
59
rs/src/ui.rs
Normal file
59
rs/src/ui.rs
Normal file
@@ -0,0 +1,59 @@
|
||||
use crate::board;
|
||||
use crate::board::GridAxis;
|
||||
|
||||
impl board::Color {
|
||||
fn to_string(&self) -> String {
|
||||
match self {
|
||||
board::Color::White => "W".to_string(),
|
||||
board::Color::Black => "B".to_string(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl board::PieceType {
|
||||
fn to_string(&self) -> String {
|
||||
match self {
|
||||
board::PieceType::Pawn => "P".to_string(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl board::Piece {
|
||||
fn to_string(&self) -> String {
|
||||
self.piece_type.to_string() + &self.color.to_string()
|
||||
}
|
||||
}
|
||||
|
||||
trait GridAxisIO
|
||||
where
|
||||
Self: GridAxis,
|
||||
{
|
||||
const ALL_CHARS: [char; 8];
|
||||
fn to_string(&self) -> String {
|
||||
Self::ALL_CHARS[self.get_index() as usize].to_string()
|
||||
}
|
||||
}
|
||||
|
||||
impl GridAxisIO for board::Rank {
|
||||
const ALL_CHARS: [char; Self::ALL_VALUES.len()] =
|
||||
['1', '2', '3', '4', '5', '6', '7', '8'];
|
||||
}
|
||||
|
||||
impl GridAxisIO for board::File {
|
||||
const ALL_CHARS: [char; Self::ALL_VALUES.len()] =
|
||||
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'];
|
||||
}
|
||||
|
||||
impl board::Position {
|
||||
fn to_string(&self) -> String {
|
||||
self.file.to_string() + &self.rank.to_string()
|
||||
}
|
||||
}
|
||||
|
||||
impl board::Board {
|
||||
pub fn to_string(&self) -> String {
|
||||
self.iter()
|
||||
.map(|(position, piece)| piece.to_string() + &position.to_string())
|
||||
.collect()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user