feat: refactor AlgorithmicEvaluator to stateless, add game engine module and holdem_sim CLI

- Refactor AlgorithmicEvaluator from stateful Arc<Evaluator> wrapper to
  pure stateless evaluator with zero-allocation construction
- Extract shared evaluation logic into pub(crate) methods, eliminating
  ~220 lines of duplicated code from Evaluator
- Add game module: table, hand runner, tournament, bots, config, stats
- Add holdem_sim CLI binary crate for running simulations
- Convert MathEvaluator to thread-safe singleton with Arc<Inner> pattern
- Replace heap-allocated combination generation with const-generics
  stack-based approach in AlgorithmicEvaluator::evaluate_n_card_hand
- Add thiserror 2 dependency for GameError derive
- Update docs: README, ACHIEVEMENTS, ROADMAP
This commit is contained in:
Jan-Peter von Hunnius 2026-05-18 15:12:34 +02:00
parent dd605e8a66
commit 17d0440c86
43 changed files with 12329 additions and 494 deletions

View file

@ -424,8 +424,8 @@ pub struct IntegrationTestResults {
pub passed_tests: usize,
/// Number of failed tests
pub failed_tests: usize,
/// Test execution time in milliseconds
pub execution_time_ms: u64,
/// Test execution time in microseconds
pub execution_time_us: u64,
}
impl IntegrationTestSuite {
@ -479,7 +479,7 @@ impl IntegrationTestSuite {
total_tests,
passed_tests,
failed_tests,
execution_time_ms: elapsed.as_millis() as u64,
execution_time_us: elapsed.as_micros() as u64,
};
println!("Integration tests completed: {:?}", results);
@ -733,6 +733,6 @@ mod tests {
let results = results.unwrap();
assert!(results.total_tests > 0);
assert!(results.execution_time_ms > 0);
assert!(results.execution_time_us > 0);
}
}