[][src]Module camel_up::camel

The camel module models Camel Up.

It identifies all the relevant parts of the Camel Up game. Starting from a Race it allows you to perform a Roll, which will return the resulting race.

let race = Race::from(vec![Marker::Camel(Camel::Red), Marker::Divider, Marker::Camel(Camel::Yellow)]);
let roll = Roll::from((Camel::Red, Face::One));

let actual = race.perform(roll);

let expected = Race::from(vec![Marker::Camel(Camel::Yellow), Marker::Camel(Camel::Red)]);
assert_eq!(actual, expected);

One can cut down on the verbosity by using the various parse functions and other convenience functions. The above code example can be widdled down to

let race = "r,y".parse::<Race>().expect("to parse");

let actual = race.perform((Camel::Red, Face::One));

let expected = "yr".parse::<Race>().expect("to parse");
assert_eq!(actual, expected);

Structs

Dice

Represents the dice that still can be rolled.

Race

Models a race as a sequence of markers.

Roll

A roll of the dice

Enums

Camel

The various camels that race in the game.

Face

The faces of the Camel dice.

Marker

A marker is used to describe a race.

NoDice

When parsing of Dice goes wrong, this enumeration tells you precisely what went down.

NotAMarker

When parsing of Marker goes wrong, this enumeration tells you precisely what went down.

RaceParseError

When parsing of Race goes wrong, this enumeration tells you precisely what went down.