pub struct NdjsonStream<S, T> { /* private fields */ }Expand description
A wrapper that converts an async stream of serializable items into NDJSON format.
Each item from the inner stream is serialized to JSON, followed by a newline. The resulting bytes are suitable for sending over HTTP as a streaming response.
§Type Parameters
S: The underlying stream typeT: The item type that implementsSerialize
§Example
ⓘ
use fastapi_core::ndjson::NdjsonStream;
use asupersync::stream;
use serde::Serialize;
#[derive(Serialize)]
struct Item { id: i64, name: String }
let items = stream::iter(vec![
Item { id: 1, name: "Alice".into() },
Item { id: 2, name: "Bob".into() },
]);
let ndjson_stream = NdjsonStream::new(items);
// Yields: b'{"id":1,"name":"Alice"}\n' then b'{"id":2,"name":"Bob"}\n'Implementations§
Source§impl<S, T> NdjsonStream<S, T>
impl<S, T> NdjsonStream<S, T>
Sourcepub fn with_config(stream: S, config: NdjsonConfig) -> Self
pub fn with_config(stream: S, config: NdjsonConfig) -> Self
Create a new NDJSON stream wrapper with custom configuration.
Trait Implementations§
Auto Trait Implementations§
impl<S, T> Freeze for NdjsonStream<S, T>where
S: Freeze,
impl<S, T> RefUnwindSafe for NdjsonStream<S, T>where
S: RefUnwindSafe,
T: RefUnwindSafe,
impl<S, T> Send for NdjsonStream<S, T>
impl<S, T> Sync for NdjsonStream<S, T>
impl<S, T> Unpin for NdjsonStream<S, T>
impl<S, T> UnwindSafe for NdjsonStream<S, T>where
S: UnwindSafe,
T: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, _span: NoopSpan) -> Self
fn instrument(self, _span: NoopSpan) -> Self
Instruments this future with a span (no-op when disabled).
Source§fn in_current_span(self) -> Self
fn in_current_span(self) -> Self
Instruments this future with the current span (no-op when disabled).
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<S> StreamExt for S
impl<S> StreamExt for S
Source§fn then<Fut, F>(self, f: F) -> Then<Self, Fut, F>
fn then<Fut, F>(self, f: F) -> Then<Self, Fut, F>
Transforms each item using an async closure.
Source§fn zip<S2>(self, other: S2) -> Zip<Self, S2>
fn zip<S2>(self, other: S2) -> Zip<Self, S2>
Zips this stream with another stream, yielding pairs.
Source§fn filter<P>(self, predicate: P) -> Filter<Self, P>
fn filter<P>(self, predicate: P) -> Filter<Self, P>
Yields only items that match the predicate.
Source§fn filter_map<T, F>(self, f: F) -> FilterMap<Self, F>
fn filter_map<T, F>(self, f: F) -> FilterMap<Self, F>
Filters and transforms items in one step.
Source§fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
Takes items while the predicate is true.
Source§fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
Skips items while the predicate is true.
Source§fn buffered(self, n: usize) -> Buffered<Self>
fn buffered(self, n: usize) -> Buffered<Self>
Buffers up to
n futures, preserving output order.Source§fn buffer_unordered(self, n: usize) -> BufferUnordered<Self>
fn buffer_unordered(self, n: usize) -> BufferUnordered<Self>
Buffers up to
n futures, yielding results as they complete.Source§fn chunks(self, size: usize) -> Chunks<Self>where
Self: Sized,
fn chunks(self, size: usize) -> Chunks<Self>where
Self: Sized,
Collects items into fixed-size chunks.
Source§fn ready_chunks(self, size: usize) -> ReadyChunks<Self>where
Self: Sized,
fn ready_chunks(self, size: usize) -> ReadyChunks<Self>where
Self: Sized,
Yields immediately available items up to a maximum chunk size.
Source§fn fold<Acc, F>(self, init: Acc, f: F) -> Fold<Self, F, Acc>
fn fold<Acc, F>(self, init: Acc, f: F) -> Fold<Self, F, Acc>
Folds all items into a single value.
Source§fn for_each_async<F, Fut>(self, f: F) -> ForEachAsync<Self, F, Fut>
fn for_each_async<F, Fut>(self, f: F) -> ForEachAsync<Self, F, Fut>
Executes an async closure for each item.
Source§fn try_collect<T, E, C>(self) -> TryCollect<Self, C>
fn try_collect<T, E, C>(self) -> TryCollect<Self, C>
Collects items from a stream of Results, short-circuiting on error.
Source§fn try_fold<T, E, Acc, F>(self, init: Acc, f: F) -> TryFold<Self, F, Acc>
fn try_fold<T, E, Acc, F>(self, init: Acc, f: F) -> TryFold<Self, F, Acc>
Folds a stream of Results, short-circuiting on error.
Source§fn try_for_each<F, E>(self, f: F) -> TryForEach<Self, F>
fn try_for_each<F, E>(self, f: F) -> TryForEach<Self, F>
Executes a fallible closure for each item, short-circuiting on error.