pub struct ByteStream<S>(pub S);
Expand description
A potentially infinite stream of bytes: any T: AsRef<[u8]>
.
A ByteStream
can be constructed from any Stream
of items of type T
where T: AsRef<[u8]>
. This includes Vec<u8>
, &[u8]
, &str
, &RawStr
,
and more. The stream can be constructed directly, via ByteStream(..)
or
ByteStream::from()
, or through generator syntax via ByteStream!
.
Responder
ByteStream
is a (potentially infinite) responder. The response
Content-Type
is set to Binary
. The body is
unsized, and values are sent as soon as
they are yielded by the internal iterator.
Example
Use ByteStream!
to yield 10 3-byte vectors, one every second, of the
form vec![i, i + 1, i + 2]
for i
from 0
to 10
exclusive:
use rocket::response::stream::ByteStream;
use rocket::futures::stream::{repeat, StreamExt};
use rocket::tokio::time::{self, Duration};
#[get("/bytes")]
fn bytes() -> ByteStream![&'static [u8]] {
ByteStream(repeat(&[1, 2, 3][..]))
}
#[get("/byte/stream")]
fn stream() -> ByteStream![Vec<u8>] {
ByteStream! {
let mut interval = time::interval(Duration::from_secs(1));
for i in 0..10u8 {
yield vec![i, i + 1, i + 2];
interval.tick().await;
}
}
}
The syntax of ByteStream!
as an expression is identical to that of
stream!
.
Tuple Fields
0: S
Trait Implementations
sourceimpl<S: Clone> Clone for ByteStream<S>
impl<S: Clone> Clone for ByteStream<S>
sourcefn clone(&self) -> ByteStream<S>
fn clone(&self) -> ByteStream<S>
Returns a copy of the value. Read more
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read more
sourceimpl<S: Debug> Debug for ByteStream<S>
impl<S: Debug> Debug for ByteStream<S>
sourceimpl<S> From<S> for ByteStream<S>
impl<S> From<S> for ByteStream<S>
Auto Trait Implementations
impl<S> RefUnwindSafe for ByteStream<S> where
S: RefUnwindSafe,
impl<S> Send for ByteStream<S> where
S: Send,
impl<S> Sync for ByteStream<S> where
S: Sync,
impl<S> Unpin for ByteStream<S> where
S: Unpin,
impl<S> UnwindSafe for ByteStream<S> where
S: UnwindSafe,
Blanket Implementations
impl<'a, T> AsTaggedExplicit<'a> for T where
T: 'a,
impl<'a, T> AsTaggedExplicit<'a> for T where
T: 'a,
fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self>
impl<'a, T> AsTaggedImplicit<'a> for T where
T: 'a,
impl<'a, T> AsTaggedImplicit<'a> for T where
T: 'a,
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
impl<T> IntoCollection<T> for T
impl<T> IntoCollection<T> for T
fn into_collection<A>(self) -> SmallVec<A> where
A: Array<Item = T>,
fn into_collection<A>(self) -> SmallVec<A> where
A: Array<Item = T>,
Converts self
into a collection.
fn mapped<U, F, A>(self, f: F) -> SmallVec<A> where
F: FnMut(T) -> U,
A: Array<Item = U>,
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcefn clone_into(&self, target: &mut T)
fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
Attaches the provided Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more