pub enum Sink {
Stdout(StdoutSink),
File(FileSink),
FanOut(Vec<Sink>),
}Expand description
Enum dispatch for output adapters.
Uses enum dispatch instead of dyn Trait because:
- Async trait methods are not object-safe
FanOut(Vec<Sink>)requires a sized, concrete type
Variants§
Stdout(StdoutSink)
Write NDJSON to stdout.
File(FileSink)
Append NDJSON to a file.
FanOut(Vec<Sink>)
Fan out to multiple sinks.
Implementations§
Source§impl Sink
impl Sink
Sourcepub fn send<'a>(
&'a mut self,
result: &'a ProcessResult,
) -> Pin<Box<dyn Future<Output = Result<(), RuntimeError>> + Send + 'a>>
pub fn send<'a>( &'a mut self, result: &'a ProcessResult, ) -> Pin<Box<dyn Future<Output = Result<(), RuntimeError>> + Send + 'a>>
Serialize and deliver a ProcessResult to this sink.
Synchronous sinks (Stdout, File) use block_in_place to avoid blocking
the Tokio runtime. Uses Box::pin for the FanOut case to handle
recursive async.
Auto Trait Implementations§
impl Freeze for Sink
impl RefUnwindSafe for Sink
impl Send for Sink
impl Sync for Sink
impl Unpin for Sink
impl UnsafeUnpin for Sink
impl UnwindSafe for Sink
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: 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<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more