mod reward;
mod tuple;
pub use reward::Reward;
use crate::logging::Loggable;
pub trait Feedback: Loggable + Clone {
type EpisodeFeedback: Default + Loggable;
type StepSummary: Summary<Item = Self> + Loggable;
type EpisodeSummary: Summary<Item = Self::EpisodeFeedback> + Loggable;
fn add_to_episode_feedback(&self, episode_feedback: &mut Self::EpisodeFeedback);
}
pub trait Summary: Default {
type Item;
fn push(&mut self, item: &Self::Item);
fn size(&self) -> u64;
fn merge(&mut self, other: Self);
}