Vendor dependencies
Let's see how I like this workflow.
This commit is contained in:
parent
34d1830413
commit
9c435dc440
7500 changed files with 1665121 additions and 99 deletions
42
vendor/tokio/tests/support/mpsc_stream.rs
vendored
Normal file
42
vendor/tokio/tests/support/mpsc_stream.rs
vendored
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
#![allow(dead_code)]
|
||||
|
||||
use std::pin::Pin;
|
||||
use std::task::{Context, Poll};
|
||||
use tokio::sync::mpsc::{self, Receiver, Sender, UnboundedReceiver, UnboundedSender};
|
||||
use tokio_stream::Stream;
|
||||
|
||||
struct UnboundedStream<T> {
|
||||
recv: UnboundedReceiver<T>,
|
||||
}
|
||||
impl<T> Stream for UnboundedStream<T> {
|
||||
type Item = T;
|
||||
fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Option<T>> {
|
||||
Pin::into_inner(self).recv.poll_recv(cx)
|
||||
}
|
||||
}
|
||||
|
||||
pub fn unbounded_channel_stream<T: Unpin>() -> (UnboundedSender<T>, impl Stream<Item = T>) {
|
||||
let (tx, rx) = mpsc::unbounded_channel();
|
||||
|
||||
let stream = UnboundedStream { recv: rx };
|
||||
|
||||
(tx, stream)
|
||||
}
|
||||
|
||||
struct BoundedStream<T> {
|
||||
recv: Receiver<T>,
|
||||
}
|
||||
impl<T> Stream for BoundedStream<T> {
|
||||
type Item = T;
|
||||
fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Option<T>> {
|
||||
Pin::into_inner(self).recv.poll_recv(cx)
|
||||
}
|
||||
}
|
||||
|
||||
pub fn channel_stream<T: Unpin>(size: usize) -> (Sender<T>, impl Stream<Item = T>) {
|
||||
let (tx, rx) = mpsc::channel(size);
|
||||
|
||||
let stream = BoundedStream { recv: rx };
|
||||
|
||||
(tx, stream)
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue