Crate umiaq

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 an entry list, returning matching solutions.

§Error Handling

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

§Example: Basic Usage

use umiaq::solver;

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

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

§Example: Error Handling with Detailed Messages

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

let entries = vec!["test"];
let result = solver::solve_equation("", &entries, 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 entries = vec!["test"];
match solver::solve_equation("BAD(PATTERN", &entries, 10) {
    Err(SolverError::ParseFailure(parse_err)) => {
        // Access the specific ParseError
        match &*parse_err {
            ParseError::InvalidInput { str, reason } => {
                println!("Invalid input in '{}': {}", str, reason);
            }
            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
entry_list
entry_list — Module to load and preprocess the crossword entry list for Umiaq
errors
Error types for parsing operations with error codes and helpful messages.
log
parser
patterns
solver
The main solver for pattern-matching equations against entry lists.
umiaq_char