arena_core/strategy.rs
1use async_trait::async_trait;
2
3use super::*;
4
5/// Represents a strategy that can be run in an [`Arena`].
6#[async_trait]
7pub trait Strategy<V> {
8 /// Initialization function for ths strategy to be run upon simulation startup.
9 async fn init(
10 &self,
11 provider: AnvilProvider,
12 signal: Signal,
13 inspector: &mut Box<dyn Inspector<V>>,
14 engine: Engine,
15 );
16
17 /// Processing function for the strategy to be run each simulation step.
18 async fn process(
19 &self,
20 provider: AnvilProvider,
21 signal: Signal,
22 inspector: &mut Box<dyn Inspector<V>>,
23 engine: Engine,
24 );
25}