maze_generator/lib.rs
1#![deny(trivial_numeric_casts, trivial_casts, unsafe_code)]
2#![warn(
3 rustdoc::missing_crate_level_docs,
4 missing_docs,
5 missing_debug_implementations,
6 missing_copy_implementations,
7 unused_import_braces,
8 unused_lifetimes,
9 unused_qualifications,
10 clippy::unwrap_used,
11 clippy::expect_used,
12 clippy::panic
13)]
14
15//! This is a collection of different maze generation algorithms.
16//!
17//! The project's main goal is to provide an easy-to-use API to different algorithms with different characteristics.
18//!
19//! # Examples
20//! ```
21//! // Generate a 3 by 3 maze using a provided seed and the recursive-backtracking algorithm
22//! use maze_generator::prelude::*;
23//! use maze_generator::recursive_backtracking::RbGenerator;
24//!
25//! let mut generator = RbGenerator::new(Some([42; 32]));
26//! let maze = generator.generate(3, 3).unwrap();
27//!
28//! assert_eq!(format!("{:?}", maze),
29//! "·-·-·-·
30//! |S| |
31//! · ·-· ·
32//! | |
33//! ·-·-· ·
34//! |G |
35//! ·-·-·-·
36//! ");
37//! ```
38//!
39//! ```
40//! // Retrieve information about a specific cell from the maze
41//! use maze_generator::prelude::*;
42//! use maze_generator::recursive_backtracking::RbGenerator;
43//!
44//! let mut generator = RbGenerator::new(Some([42; 32]));
45//! let maze = generator.generate(3, 3).unwrap();
46//!
47//! assert_eq!(format!("{:?}", maze.get_field(&maze.start).unwrap()),
48//! "Field { north: \"wall\", east: \"wall\", south: \"passage\", west: \"wall\" }");
49//! ```
50
51#[cfg(test)]
52#[macro_use]
53extern crate quickcheck;
54
55#[cfg(test)]
56#[macro_use]
57mod test_util;
58
59#[macro_use]
60pub mod prelude;
61pub mod ellers_algorithm;
62pub mod growing_tree;
63pub mod prims_algorithm;
64pub mod recursive_backtracking;