use core::fmt::Debug;
use super::Receiver;
pub struct OwnedIter<T> {
recv: Receiver<T>,
}
impl<T> OwnedIter<T> {
pub(crate) fn new(recv: Receiver<T>) -> Self {
Self { recv }
}
}
impl<T> Iterator for OwnedIter<T> {
type Item = T;
fn next(&mut self) -> Option<Self::Item> {
self.recv.dequeue()
}
}
impl<T> Debug for OwnedIter<T> {
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
write!(f, "Owned-Iter ()")
}
}
#[cfg(test)]
mod tests {
use crate::queues::mpsc::jiffy;
use super::*;
#[test]
fn iterate() {
let (rx, tx) = jiffy::queue();
tx.enqueue(13).unwrap();
drop(tx);
let mut rx_iter = OwnedIter::new(rx);
assert_eq!(Some(13), rx_iter.next());
assert_eq!(None, rx_iter.next());
}
}