use super::{Record, Recorder};
use crate::{Env, ReplayBufferBase};
use std::marker::PhantomData;
#[derive(Default)]
pub struct BufferedRecorder<E, R>
where
E: Env,
R: ReplayBufferBase,
{
buf: Vec<Record>,
phantom: PhantomData<(E, R)>,
}
impl<E, R> BufferedRecorder<E, R>
where
E: Env,
R: ReplayBufferBase,
{
pub fn new() -> Self {
Self {
buf: Vec::default(),
phantom: PhantomData,
}
}
pub fn iter(&self) -> std::slice::Iter<Record> {
self.buf.iter()
}
}
impl<E, R> Recorder<E, R> for BufferedRecorder<E, R>
where
E: Env,
R: ReplayBufferBase,
{
fn write(&mut self, record: Record) {
self.buf.push(record);
}
fn flush(&mut self, _step: i64) {
unimplemented!();
}
fn store(&mut self, _record: Record) {
unimplemented!();
}
}