## Expand description

An analysis engine for zero-sum games.

This crate provides a number of traits that can be used to facilitate the implementation of a zero-sum game, and to allow the analysis thereof.

Also provided through the use of optional features are implementations for tic-tac-toe and the game of tak.

## §Usage

This crate is on crates.io and can be
used by adding `zero_sum`

to the dependencies in your project’s `Cargo.toml`

.

```
[dependencies]
zero_sum = "1.2"
```

and add this to your crate root:

`extern crate zero_sum;`

If you want to implement the library, you’ll need to include a `#[macro_use]`

line before `extern crate zero_sum;`

If you want to use one of the implementations provided inside the `zero_sum::impls`

module, you’ll need to specify the appropriate features in your project’s `Cargo.toml`

:

```
[features]
default = ["zero_sum/with_tak"]
```

for instance, to include the `tak`

module.

## §Implementation

The three basic traits are `Ply`

, `Resolution`

, and `State`

. These form
the basic building blocks of any zero-sum game.

In order to provide analysis, one must also create an evaluator type with
`analysis::Evaluator`

that has an associated evaluation type that implements
`analysis::Evaluation`

(usually a tuple wrapper around a numeric type, i.e.
`struct Eval(i32);`

). Finally, implement `analysis::Extrapolatable`

on the
`State`

type.

## §Example

The provided tic-tac-toe implementation is very simple and a usage example can be found in examples/tic_tac_toe.rs.

## Modules§

- Contains the traits and tools to provide analysis of zero-sum games.

## Macros§

- Implement arithmetic operators (
`Add`

,`Sub`

,`Mul`

,`Neg`

,`Div`

) and`Display`

for a tuple struct in terms of the enclosed type.

## Traits§

- This trait marks a ply.
- A game’s resolution.
- The state of the game.