#![allow(unknown_lints)]
#![warn(absolute_paths_not_starting_with_crate)]
#![warn(anonymous_parameters)]
#![allow(box_pointers)]
#![warn(deprecated_in_future)]
#![warn(elided_lifetimes_in_paths)]
#![warn(explicit_outlives_requirements)]
#![warn(indirect_structural_match)]
#![warn(keyword_idents)]
#![warn(macro_use_extern_crate)]
#![warn(meta_variable_misuse)]
#![warn(missing_abi)]
#![warn(missing_copy_implementations)]
#![warn(missing_debug_implementations)]
#![warn(missing_docs)]
#![warn(non_ascii_idents)]
#![warn(noop_method_call)]
#![warn(pointer_structural_match)]
#![allow(rust_2021_incompatible_closure_captures)]
#![warn(rust_2021_incompatible_or_patterns)]
#![warn(rust_2021_prefixes_incompatible_syntax)]
#![warn(rust_2021_prelude_collisions)]
#![warn(single_use_lifetimes)]
#![warn(trivial_casts)]
#![warn(trivial_numeric_casts)]
#![warn(unaligned_references)]
#![allow(unreachable_pub)]
#![forbid(unsafe_code)]
#![warn(unsafe_op_in_unsafe_fn)]
#![warn(unstable_features)]
#![allow(unused_crate_dependencies)]
#![warn(unused_extern_crates)]
#![warn(unused_import_braces)]
#![warn(unused_labels)]
#![warn(unused_lifetimes)]
#![warn(unused_qualifications)]
#![warn(unused_results)]
#![warn(variant_size_differences)]
#![deny(clippy::mem_forget)]
#![cfg_attr(test, allow(clippy::wildcard_imports))]
#![allow(missing_docs)]
#![allow(clippy::missing_errors_doc)]
#![allow(clippy::module_name_repetitions)]
#![allow(clippy::must_use_candidate)]
pub use self::{
block::{
base::{color::ColorId, Block, Color, Description},
binary::{BinaryBlock, BinaryColor},
multicolor::ColoredBlock,
},
board::Board,
parser::{BoardParser, DetectedParser},
solver::{
line::{DynamicColor, DynamicSolver as LineSolver},
probing::{FullProbe1 as FullProbe, ProbeSolver},
propagation::Solver as PropagationSolver,
run as solve,
},
};
mod block;
mod board;
mod cache;
pub mod parser;
pub mod render;
mod solver;
mod utils;
pub type RcBoard<B> = utils::rc::MutRc<Board<B>>;