Crate umiaq

Source
Expand description

Umiaq is a pattern-matching solver for crossword puzzles and similar word games.

§Core Functionality

The main entry point is solver::solve_equation, which takes a pattern string and a word list, returning matching solutions.

§Error Handling

Umiaq uses structured error types with error codes and helpful messages:

§Example: Basic Usage

use umiaq::solver;

let words = vec!["cat", "dog", "catalog"];
let result = solver::solve_equation("A*B", &words, 10)?;

for solution in result.solutions {
    println!("{}", solver::solution_to_string(&solution)?);
}

§Example: Error Handling with Detailed Messages

use umiaq::solver::{self, SolverError};

let words = vec!["test"];
let result = solver::solve_equation("", &words, 10);

match result {
    Ok(r) => println!("Found {} solutions", r.solutions.len()),
    Err(e) => {
        // Display with error code and help text
        eprintln!("Error: {}", e.display_detailed());
        // Error code for documentation lookup
        eprintln!("Code: {}", e.code());
    }
}

§Example: Handling Specific Error Types

use umiaq::solver::{self, SolverError};
use umiaq::errors::ParseError;

let words = vec!["test"];
match solver::solve_equation("BAD(PATTERN", &words, 10) {
    Err(SolverError::ParseFailure(parse_err)) => {
        // Access the specific ParseError
        match &*parse_err {
            ParseError::InvalidInput { str } => {
                println!("Invalid input: {}", str);
            }
            ParseError::ClauseParseError { clause, source } => {
                println!("Error in clause '{}': {}", clause, source);
            }
            _ => println!("Other parse error: {}", parse_err),
        }
    }
    Err(e) => println!("Solver error: {}", e),
    Ok(_) => println!("Success"),
}

Modules§

bindings
complex_constraints
constraints
errors
Error types for parsing operations with error codes and helpful messages.
parser
patterns
solver
The main solver for pattern-matching equations against word lists.
umiaq_char
word_list
word_list — Module to load and preprocess the crossword word list for Umiaq