# watchmaker
A [genetic algorithm](https://en.wikipedia.org/wiki/Genetic_algorithm) library implementation in Rust.
[![CircleCI](https://circleci.com/gh/thomasbratt/watchmaker/tree/main.svg?style=svg)](https://circleci.com/gh/thomasbratt/watchmaker/tree/main)
## Features
* Developed as an investigation into capabilities and implementation characteristics
* Written in the Rust programming language
* The API aims to be minimal and complete
* Built-in crossover protection, to avoid the common bug where the first genome in a crossover operation is always used for the start of the resulting genome
* Some features are missing (see Roadmap section)
## Usage
* Install Rust using `rustup`
* Add a reference to your `Cargo.toml` file from:
* Implement the `Genetic` trait for your search problem and call `watchmaker::search`.
```rust
pub fn search(
mut genetic: Box>,
mut progress: Option