roopes-core 0.1.1

Roopes is a Rust Object Oriented Pattern Element System. This crate provides generic traits and implementations for typical object-oriented patterns in Rust. It is intended to be used as a cluster of utility classes for implementing OOP-architected executables -- in Rust!
Documentation
//! Provides a simple wrapper struct around
//! [`iter::Iterator`].
use super::Emitter;
use std::{
    cell::RefCell,
    iter,
};

/// Wraps an [`iter::Iterator`] in an
/// [`Emitter<Option>`].
pub struct Iterator<R>
{
    iter: RefCell<Box<dyn iter::Iterator<Item = R>>>,
}

impl<R> Iterator<R>
{
    /// Creates a new [`Iterator`] with a given
    /// [`Box`]ed [`iter::Iterator`].
    pub fn new(iter: RefCell<Box<dyn iter::Iterator<Item = R>>>)
        -> Iterator<R>
    {
        Iterator { iter }
    }
}

impl<R> Emitter<Option<R>> for Iterator<R>
{
    fn emit(&self) -> Option<R>
    {
        self.iter.borrow_mut().next()
    }
}