## nightly rust_poker

Rust poker library

### 14 releases

 0.1.14 Mar 4, 2021 Feb 24, 2021 Nov 12, 2020 Oct 17, 2020 Jul 23, 2020

#1213 in Algorithms

95KB
2K SLoC

# RustPoker

A poker library written in rust.

• Multithreaded range vs range equity calculation
• Fast hand evaluation
• Efficient hand indexing

## Installation

Add this to your `Cargo.toml`:

``````[dependencies]
rust_poker = "0.1.13"
``````

Note: The first build of an application using `rust_poker` will take extra time to generate the hand evaluation table

## Hand Evaluator

Evaluates the strength of any poker hand using up to 7 cards.

### Usage

``````use rust_poker::hand_evaluator::{Hand, CARDS, evaluate};
// cards are indexed 0->51 where index is 4 * rank + suit
let hand = Hand::empty() + CARDS[0] + CARDS[1];
let score = evaluate(&hand);
println!("score: {}", score);
``````

## Equity Calculator

Calculates the range vs range equities for up to 6 different ranges specified by equilab-like range strings. Supports monte-carlo simulations and exact equity calculations

### Usage

``````use rust_poker::hand_range::{HandRange, get_card_mask};
use rust_poker::equity_calculator::approx_equity;
let ranges = HandRange::from_strings(["AK,22+".to_string(), "random".to_string()].to_vec());
let stdev_target = 0.01;
let equities = approx_equity(&ranges, public_cards, n_threads, stdev_target);
println!("player 1 equity: {}", equities[0]);
``````

## Credit

The hand evaluator and equity calculator library is a rust rewrite of zekyll's C++ equity calculator, OMPEval

~1.6–2.6MB
~51K SLoC