1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
//! A simple Rubik's Cube simulator (and eventually solver).
//!
//! # Quick Start Guide
//!
//! To quickly get a Rubik's Cube simulation running, we can follow the code sample below:
//!
//! ```rust
//! use cubesim::prelude::{Cube, Move, MoveVariant};
//! use cubesim::FaceletCube;
//!
//! let cube = FaceletCube::new(3);
//! let turned_cube = cube.apply_move(Move::U(MoveVariant::Double));
//! println!("{:?}", turned_cube.state());
//! ```
//!
//! # Cube Trait Overview
//! To support multiple underlying implementations of a Rubik's Cube, we define a ``Cube`` trait
//! which define the minimal set of behaviours expected of a Rubik's Cube. Specific implementations
//! can then be used for different scenarios that fit its characteristics. For example, the ``FaceletCube``
//! is the most performant and versatile while the ``GeoCube`` allows for easy 3D modelling.
pub use ;
pub use ;
pub use FaceletCube;
pub use GeoCube;
pub use solve;
pub use ;