sudoku-plus 0.1.3

sudoku-plus is a versatile Rust library designed for generating and solving various Sudoku structures, including Plane, Multi-layer, and Cubic Sudokus.
Documentation
// Copyright 2026 PARK Youngho.
//
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
// https://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your option.
// This file may not be copied, modified, or distributed
// except according to those terms.
///////////////////////////////////////////////////////////////////////////////


//! # __Sudoku-plus:__ An Expandable Sudoku Library
//! 
//! `Sudoku-plus` is a versatile Rust library designed for providing
//! various kinds of sudoku algorithms. It provides 2D plane sudoku algorithm,
//! 3D multi-layer sudoku algorithm, and 3D cubic sudoku algorithm.
//! They generates sudoku problems and solves sudoku problems. They are designed
//! to be flexible and efficient, allowing users to easily create and solve
//! sudoku puzzles of varying sizes and complexities. The library is built with
//! a focus on performance and usability, making it suitable for both casual
//! puzzle enthusiasts and developers looking to integrate sudoku functionality
//! into their applications. `sudoku-plus` is a versatile Rust library designed
//! for generating and solving various Sudoku structures,
//! including __Plane__, __Multi-layer__, and __Cubic__ Sudoku.
//! 
//! # Roadmap for Version 1.0
//! 
//! The following features are planned for the sudoku-plus ecosystem.
//! - [X] __Completed:__ Implementation and documentation are
//!   at least __95%__ complete.
//! - [ ] __In Progress:__ Implementation or documentation is below __95%__,
//!   or work has not yet begun.
//! 
//! # 1. 2D Sudoku
//! 
//! - [X] __PlaneSudoku:__ A generic 2D Sudoku with a (N^2 X N^2) grid.
//!   You can define the size by choosing the constant `N`. --
//!   [PlaneSudoku](plane_sudoku/struct.PlaneSudoku.html#struct.PlaneSudoku)
//! 
//! # 2. 3D Sudoku
//! 
//! - [ ] __Multi-layer Sudoku:__ A 3D Sudoku structure with dimensions of 
//!   (N^2 X N^2 X N^2). The size is determined by the constant `N`.  --
//!   [MultiLayerSudoku](multi_layer_sudoku/struct.MultiLayerSudoku.html#struct.MultiLayerSudoku)
//! - [ ] __Cubic Sudoku:__ A 3D Sudoku structure with dimensions of (N^3 X N^3 X N^3). The size is determined by the constant `N`. --
//!   [CubicSudoku](cubic_sudoku/struct.CubicSudoku.html#struct.CubicSudoku)
//! 
//! # 3. Sudoku Elements
//! 
//! - [ ] __Sudoku Element:__ A generic Sudoku component designed for building
//!   complex applications, such as academic timetable generators powered by
//!   Sudoku algorithms. For the future use, this trait `SudokuElement` is
//!   defined for sudoku elements. It is supposed to be implemented by any data
//!   type that supports cryptocol::number::SmallUInt. It can be removed in the
//!   future if it is found not necessary. --
//!   [SudokuElement](sudoku_element/struct.SudokuElement.html#struct.SudokuElement).
//! 
//! # Versioning Policy
//! 
//! The project will reach Version 1.0.0 once all functional areas listed above
//! are fully implemented.
//! 
//! - __Pre-v1.0:__ Versions will range up to 0.3.x based on the progress of the
//!   listed functionalities.
//! - __Post-v1.0:__ New features and stable releases will follow standard
//!   semantic versioning beyond 1.0.0.
//! 
//! _Note: Version numbers like 0.2.0 indicate progress through the
//! functionality list, not necessarily a 20% completion of the entire codebase.

/// The `plane_sudoku` module provides the struct `PlaneSudoku`
/// for 2D plane sudoku.
pub mod plane_sudoku;

/// The `multi_layer_Sudoku` module provides the struct `MultiLayerSudoku`
/// for 3D multi-layer sudoku.
pub mod multi_layer_sudoku;

/// The `cubic_sudoku` module provides the struct `CubicSudoku`
/// for 3D cubic sudoku.
pub mod cubic_sudoku;

/// The `sudoku_element` module provides the trait `SudokuElement`
/// for sudoku elements.
pub mod sudoku_element;

pub use plane_sudoku::PlaneSudoku;
pub use multi_layer_sudoku::MultiLayerSudoku;
pub use cubic_sudoku::CubicSudoku;
pub use sudoku_element::SudokuElement;

pub use plane_sudoku::PlaneSudoku_4X4;
pub use plane_sudoku::PlaneSudoku_9X9;
pub use plane_sudoku::PlaneSudoku_16X16;
pub use plane_sudoku::PlaneSudoku_25X25;
pub use plane_sudoku::PlaneSudoku_36X36;
pub use plane_sudoku::PlaneSudoku_49X49;
pub use plane_sudoku::PlaneSudoku_64X64;
pub use plane_sudoku::PlaneSudoku_81X81;
pub use plane_sudoku::PlaneSudoku_100X100;
pub use plane_sudoku::PlaneSudoku_121X121;
pub use plane_sudoku::PlaneSudoku_144X144;
pub use plane_sudoku::PlaneSudoku_169X169;
pub use plane_sudoku::PlaneSudoku_196X196;
pub use plane_sudoku::PlaneSudoku_225X225;
pub use plane_sudoku::PlaneSudoku_289X289;
pub use plane_sudoku::PlaneSudoku_324X324;
pub use plane_sudoku::PlaneSudoku_361X361;
pub use plane_sudoku::PlaneSudoku_400X400;

pub use multi_layer_sudoku::MultiLayerSudoku_4X4X4;
pub use multi_layer_sudoku::MultiLayerSudoku_9X9X9;
pub use multi_layer_sudoku::MultiLayerSudoku_16X16X16;
pub use multi_layer_sudoku::MultiLayerSudoku_25X25X25;
pub use multi_layer_sudoku::MultiLayerSudoku_36X36X36;
pub use multi_layer_sudoku::MultiLayerSudoku_49X49X49;
pub use multi_layer_sudoku::MultiLayerSudoku_64X64X64;
pub use multi_layer_sudoku::MultiLayerSudoku_81X81X81;
pub use multi_layer_sudoku::MultiLayerSudoku_100X100X100;
pub use multi_layer_sudoku::MultiLayerSudoku_121X121X121;
pub use multi_layer_sudoku::MultiLayerSudoku_144X144X144;
pub use multi_layer_sudoku::MultiLayerSudoku_169X169X169;
pub use multi_layer_sudoku::MultiLayerSudoku_196X196X196;
pub use multi_layer_sudoku::MultiLayerSudoku_225X225X225;
pub use multi_layer_sudoku::MultiLayerSudoku_289X289X289;
pub use multi_layer_sudoku::MultiLayerSudoku_324X324X324;
pub use multi_layer_sudoku::MultiLayerSudoku_361X361X361;
pub use multi_layer_sudoku::MultiLayerSudoku_400X400X400;