use super::Env;
pub trait Info {}
pub struct Step<E: Env> {
pub act: E::Act,
pub obs: E::Obs,
pub reward: Vec<f32>,
pub is_done: Vec<i8>,
pub info: E::Info,
pub init_obs: E::Obs,
}
impl<E: Env> Step<E> {
pub fn new(
obs: E::Obs,
act: E::Act,
reward: Vec<f32>,
is_done: Vec<i8>,
info: E::Info,
init_obs: E::Obs,
) -> Self {
Step {
act,
obs,
reward,
is_done,
info,
init_obs,
}
}
}
pub trait StepProcessorBase<E: Env> {
type Config: Clone;
type Output;
fn build(config: &Self::Config) -> Self;
fn reset(&mut self, init_obs: E::Obs);
fn process(&mut self, step: Step<E>) -> Self::Output;
}