message: Add a `to_stream` method to the work queue
diff: use std::collections::VecDeque;
  +use futures::{stream, Stream};
  use std::sync::{
  atomic::{AtomicUsize, Ordering},
  Arc, Mutex,
  @@ -138,6 +139,18 @@ impl<T> WorkQueue<T> {
  self.notify.notify_waiters();
  }
  + /// Creates a streaming consumer of the work queue.
  + #[inline]
  + pub fn to_stream(self: Arc<Self>) -> impl Stream<Item = JobHandle<T>> {
  + stream::unfold((), move |_| {
  + let local_ref = self.clone();
  + async move {
  + let next = local_ref.next_job().await;
  + next.map(|handle| (handle, ()))
  + }
  + })
  + }
  +
  /// Mark job completion.
  ///
  /// This is an internal function to be used by `JobHandle`, which locks the internal queue and
  