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}