sokoban-elements 0.2.1

Parsing and writing Sokoban, Hexoban, Trioban and Octoban file formats.
Documentation
/// Game solving mode.
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash, Default)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum SolvingMode {
    /// Forward solving mode
    ///
    /// - pusher is allowed to push single box at the time
    /// - pusher can't pull boxes
    /// - pusher can't jump over boxes or walls
    #[default]
    Forward,

    /// Reverse solving mode
    ///
    /// When game is started, positions of box and goal are switched and game
    /// starts in solved state.
    ///
    /// Pusher can only pull boxes, not push them. If position allows a pull,
    /// that pull is optional (pusher is allowed to move without pull even if
    /// pull is possible).
    ///
    /// Pusher is allowed to jump over boxes, walls and other pushers. Jumps are
    /// allowed only before first box had been pulled.
    ///
    /// When game is started in reverse solving mode, pusher may end up standing
    /// "on top" of a box. I that case first move for that pusher must be jump.
    ///
    /// Jumping after first pull can be optionally enabled if that helps
    /// searching for board solution.
    Reverse,
}