summary refs log tree commit diff
path: root/library/alloc/src
diff options
context:
space:
mode:
authorYoshua Wuyts <yoshuawuyts@gmail.com>2020-11-13 18:24:26 +0100
committerYoshua Wuyts <yoshuawuyts@gmail.com>2021-01-22 17:41:56 +0100
commit0c8db16a67d02127cb6b4a1f399db054517f6aee (patch)
tree3bb4424dddad5e7715b1f7187b6691c475967618 /library/alloc/src
parentbbc01bb624a960533e049fdb98d0489ff2a8de06 (diff)
downloadrust-0c8db16a67d02127cb6b4a1f399db054517f6aee.tar.gz
rust-0c8db16a67d02127cb6b4a1f399db054517f6aee.zip
Add `core::stream::Stream`
This patch adds the `core::stream` submodule and implements `core::stream::Stream` in accordance with RFC2996.

Add feedback from @camelid
Diffstat (limited to 'library/alloc/src')
-rw-r--r--library/alloc/src/boxed.rs14
-rw-r--r--library/alloc/src/lib.rs1
2 files changed, 15 insertions, 0 deletions
diff --git a/library/alloc/src/boxed.rs b/library/alloc/src/boxed.rs
index 0aa52b35ced..e586ff89902 100644
--- a/library/alloc/src/boxed.rs
+++ b/library/alloc/src/boxed.rs
@@ -149,6 +149,7 @@ use core::ops::{
 };
 use core::pin::Pin;
 use core::ptr::{self, Unique};
+use core::stream::Stream;
 use core::task::{Context, Poll};
 
 use crate::alloc::{handle_alloc_error, AllocError, Allocator, Global, Layout, WriteCloneIntoRaw};
@@ -1618,3 +1619,16 @@ where
         F::poll(Pin::new(&mut *self), cx)
     }
 }
+
+#[unstable(feature = "async_stream", issue = "79024")]
+impl<S: ?Sized + Stream + Unpin> Stream for Box<S> {
+    type Item = S::Item;
+
+    fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Option<Self::Item>> {
+        Pin::new(&mut **self).poll_next(cx)
+    }
+
+    fn size_hint(&self) -> (usize, Option<usize>) {
+        (**self).size_hint()
+    }
+}
diff --git a/library/alloc/src/lib.rs b/library/alloc/src/lib.rs
index 8d721ed7487..e524eb05fcd 100644
--- a/library/alloc/src/lib.rs
+++ b/library/alloc/src/lib.rs
@@ -82,6 +82,7 @@
 #![feature(array_windows)]
 #![feature(allow_internal_unstable)]
 #![feature(arbitrary_self_types)]
+#![feature(async_stream)]
 #![feature(box_patterns)]
 #![feature(box_syntax)]
 #![feature(cfg_sanitize)]