| Crates.io | cubesim |
| lib.rs | cubesim |
| version | 0.0.7 |
| created_at | 2021-10-05 13:25:02.91687+00 |
| updated_at | 2021-11-12 09:29:45.218296+00 |
| description | Rubik's Cube simulation and solving library. |
| homepage | |
| repository | https://github.com/V-Wong/CubeSimRS/ |
| max_upload_size | |
| id | 460586 |
| size | 99,404 |
CubeSim is a Rubik's Cube simulator and solver written entirely in Rust.
The core types in the library are as follows:
Cube trait: To support multiple implementations of a Rubik’s Cube, we define a trait which includes the minimal set of behaviours expected of a Rubik’s Cube. Specific implementations can then be used for different scenarios. For example, the FaceletCube is most performant while the GeoCube allows for easy 3D modelling.Face enum: A face of a Rubik’s Cube sticker represented in WCA notation.Move enum: A move of a 3x3x3 Rubik’s Cube represented in WCA notation. Each Move must be tagged with a MoveVariant to completely define a move.MoveVariant enum: A move variation that must be applied to the Move enum.After understanding these core types, we can start writing a basic simulation:
use cubesim::prelude::{Cube, Face, Move, MoveVariant};
use cubesim::cube_implementors::FaceletCube;
let cube = FaceletCube::new(3);
let turned_cube = cube.apply_move(Move::U(MoveVariant::Double));
println!("{:?}", turned_cube.get_state());
To build more complex simulations and solvers, please follow our official documentation.