pub fn message_iterator<T>() -> (Sink<T>, MsgIter<T>) {
    let queue = Rc::new(RefCell::new(VecDeque::new()));
    (
        Sink {
            queue: Rc::downgrade(&queue),
        },
        MsgIter { queue },
    )
}
/// Create a new message iterator and an associated sink.
Create a new message iterator and an associated sink.
Create a new message iterator and an associated sink .
pub fn message_iterator<T>() -> (Sink<T>, MsgIter<T>) {
    let queue = Rc::new(RefCell::new(VecDeque::new()));
    (
        Sink {
            queue: Rc::downgrade(&queue),
        },
        MsgIter { queue },
    )
}
pub fn message_iterator < T > ( ) -> ( Sink < T > , MsgIter < T > ) { let queue = Rc :: new ( RefCell :: new ( VecDeque :: new ( ) ) ) ; ( Sink { queue : Rc :: downgrade ( & queue ) , } , MsgIter { queue } , ) }
Create a new message iterator and an associated sink.
Create a new message iterator and an associated sink .