use std::cell::RefCell;
use std::fmt;
use std::rc::Rc;
use reddb_io_toon::Value;
#[derive(Clone)]
pub(crate) struct Inputs(Rc<RefCell<dyn Iterator<Item = Result<Value, String>>>>);
impl fmt::Debug for Inputs {
fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
formatter.write_str("Inputs")
}
}
impl Inputs {
pub(crate) fn new(source: impl Iterator<Item = Result<Value, String>> + 'static) -> Self {
Self(Rc::new(RefCell::new(source)))
}
pub(crate) fn next_input(&self) -> Option<Result<Value, String>> {
self.0.borrow_mut().next()
}
}