Expand description
Evaluroll is a dice roll evaluator for tabletop games. It supports dice notation and basic arithmetic, as specified in the roll20 spec. It also supports keeping and dropping dice, as well as parenthesized expressions.
It also supports parsing into an AST, which can be used to evaluate the expression multiple times.
§Examples
Parsing an expression into an AST:
let ast = evaluroll::parse("1d20")?;
Evaluating an AST:
use evaluroll::Eval;
let ast = evaluroll::parse("1d20")?;
let mut rng = rand::thread_rng();
let output = ast.eval(&mut rng)?;
assert_eq!(1, output.rolls.len());
assert!((1..=20).contains(&output.total));
Evaluating an expression directly:
let mut rng = rand::thread_rng();
let output = evaluroll::eval(&mut rng, "1d20")?;
assert_eq!(1, output.rolls.len());
assert!((1..=20).contains(&output.total));
§Features
Evaluroll has the following features:
trace
: Enables tracing of the AST and the output of the parser.
Re-exports§
pub use parser::expression as parse;
Modules§
Enums§
- Error
- Errors that can occur when parsing or evaluating a dice roll expression.
Traits§
- Eval
- A trait for evaluating an AST that depends on a random number generator.
Functions§
- eval
- Evaluates the expression, and rolls dice in compliance with that expression.