#[derive(Clone)]
pub struct ChessBoard
{
drawing_area: DrawingArea,
reversed: bool,
logic: RefCell<ChessGame>,
cells_size: u32,
moved_piece: RefCell<Option<MovedPiece>>,
pieces_images: HashMap<char, Pixbuf>,
}
#[derive(Clone, Debug)]
struct MovedPiece
{
piece_type: Piece,
coords_x: f64,
coords_y: f64,
start_file: u8,
start_rank: u8
}
and the following method of struct ChessBoard
fn handle_mouse_moved(&self, coords: (f64, f64)) {
match self.moved_piece.into_inner() {
Some(ref mut moved_piece) => moved_piece.translate_to(coords.0, coords.1),
None => {}
}
}