From a79b338e90db1948f6587ab02e149e73bb1842f0 Mon Sep 17 00:00:00 2001 From: Ilion Beyst Date: Sun, 23 Jan 2022 13:23:23 +0100 Subject: run all bots in python docker for now --- planetwars-matchrunner/src/lib.rs | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'planetwars-matchrunner') diff --git a/planetwars-matchrunner/src/lib.rs b/planetwars-matchrunner/src/lib.rs index 2e4200c..7eff489 100644 --- a/planetwars-matchrunner/src/lib.rs +++ b/planetwars-matchrunner/src/lib.rs @@ -42,7 +42,7 @@ pub struct MatchPlayer { } #[async_trait] -pub trait BotSpec { +pub trait BotSpec : Send + Sync{ async fn run_bot( &self, player_id: u32, @@ -66,10 +66,7 @@ pub async fn run_match(config: MatchConfig) { .enumerate() .map(|(player_id, player)| { let player_id = (player_id + 1) as u32; - player - .bot_spec - .run_bot(player_id, event_bus.clone()) - .map(move |handle| (player_id, handle)) + start_bot(player_id, event_bus.clone(), &player.bot_spec) }) .collect::>() // await all results @@ -101,3 +98,13 @@ pub async fn run_match(config: MatchConfig) { let match_state = pw_match::PwMatch::create(match_ctx, pw_config); match_state.run().await; } + +// writing this as a closure causes lifetime inference errors +async fn start_bot( + player_id: u32, + event_bus: Arc>, + bot_spec: &Box, +) -> (u32, Box) { + let player_handle = bot_spec.run_bot(player_id, event_bus).await; + (player_id, player_handle) +} -- cgit v1.2.3