use crate::actions::Actioner;
use crate::errors::LearnerError;
pub trait Stater<'a, A>
where
A: Actioner<'a>,
{
fn possible_actions(&self) -> Vec<&'a A>;
fn action_is_compatible(&self, actioner: &'a A) -> bool;
fn get_action(&self, action_name: &str) -> Result<&'a A, LearnerError>;
fn id(&self) -> &str;
fn apply(&self, actioner: &'a A) -> Result<(), LearnerError>;
}