rbp_gameplay/lib.rs
1//! Poker game engine with state management, action handling, and settlement.
2//!
3//! This module implements the rules and mechanics of No-Limit Texas Hold'em,
4//! tracking game state across betting rounds and resolving showdowns.
5//!
6//! ## State Representation
7//!
8//! - [`Game`] — The memoryless present: stacks, pot, board, and active players
9//! - [`Partial`] — The remembered past: complete action history for a hand
10//! - [`Path`] — Compressed action sequence for tree traversal
11//!
12//! ## Actions
13//!
14//! - [`Action`] — A player decision: fold, check, call, or raise
15//! - [`Edge`] — A game tree transition with the acting player
16//! - [`Odds`] — Pot odds abstraction for bet sizing (1/3, 1/2, 2/3, pot, all-in)
17//!
18//! ## Resolution
19//!
20//! - [`Showdown`] — Final hand comparison when multiple players remain
21//! - [`Settlement`] — Pot distribution with side-pot handling
22//! - [`PnL`] — Profit and loss accounting per player
23//!
24//! ## Supporting Types
25//!
26//! - [`Seat`] — Player position and stack at the table
27//! - [`Turn`] — Whose action it is and what options they have
28//! - [`Arrangement`] — Positional configuration for heads-up or multiway
29//! - [`Abstraction`] — Abstract bucket assignment for strategic equivalence
30//!
31//! ## Information Levels
32//!
33//! - [`Partial`] — Partial information: hero's cards only (concrete)
34//! - [`Perfect`] — Complete information: both players' cards (concrete)
35mod abstraction;
36mod action;
37mod arrangement;
38mod edge;
39mod game;
40mod odds;
41mod partial;
42mod path;
43mod perfect;
44mod pnl;
45mod recall;
46mod seat;
47mod settlement;
48mod showdown;
49mod size;
50mod turn;
51
52pub use abstraction::*;
53pub use action::*;
54pub use arrangement::*;
55pub use edge::*;
56pub use game::*;
57pub use odds::*;
58pub use partial::*;
59pub use path::*;
60pub use perfect::*;
61pub use pnl::*;
62pub use recall::*;
63pub use seat::*;
64pub use settlement::*;
65pub use showdown::*;
66pub use size::*;
67pub use turn::*;