puzzle_utils/
lib.rs

1pub mod puzzles;
2mod structures;
3mod util;
4
5use std::io::Cursor;
6
7use image::{ImageBuffer, ImageError, ImageFormat, Rgb};
8
9pub use crate::puzzles::maze::{
10    create_maze, print_maze, print_maze_solution, MazeAlgorithm, MazeDirection, MazeError, MazeNode,
11};
12pub use crate::puzzles::nonogram::{
13    parse_nonogram_rules, print_nonogram, print_nonogram_solution, solve_nonogram, NonogramError,
14};
15pub use crate::puzzles::sudoku::{parse_sudoku, print_sudoku, solve_sudoku, SudokuError};
16
17pub type RgbBuffer = ImageBuffer<Rgb<u8>, Vec<u8>>;
18
19/// Converts a RgbBuffer to a Vec of bytes representing a PNG
20pub fn image_to_png_bytes(image: &RgbBuffer) -> Result<Vec<u8>, ImageError> {
21    let mut bytes = Vec::new();
22    image.write_to(&mut Cursor::new(&mut bytes), ImageFormat::Png)?;
23
24    Ok(bytes)
25}