pub struct Options {
pub log_level: Option<LogLevel>,
pub stderr_log_level: Option<LogLevel>,
pub failure_log_level: Option<LogLevel>,
pub disable_streaming: bool,
pub stdin: Option<Box<dyn Read + Send>>,
pub env: Option<Vec<String>>,
pub timeout: Option<Duration>,
pub log_writer: Option<Arc<Mutex<Vec<u8>>>>,
}Expand description
Ported from Options in exec.go.
timeout has no Go counterpart on Options itself — Go threads a
deadline through the ambient context.Context argument every function
in this package takes. This port has no ambient context (see the
“Design notes” section of PORT_NOTES.md), so a deadline is passed
explicitly here instead. This is a disclosed deviation, not a silent
behavioral gap.
log_writer corresponds to Go’s Logger *slog.Logger field. Go’s
tests inject a *slog.Logger writing to an in-memory buffer
(captureLogger) to assert on the single “command error”/“command
completed” completion record logRunCompletion emits after a run
finishes. This port doesn’t thread a full tracing::Dispatch through
here (that would need tracing::dispatcher::with_default’s
thread-local guard held across the .await points in
run_async, which doesn’t survive a task being moved between
worker threads) – instead log_writer, when set, receives that same
one completion line, formatted directly by log_completion. When
None (the default), no completion line is emitted at all, which is
a disclosed narrowing from Go’s “falls back to slog.Default()”
behavior: this port has no equivalent of a mutable, ambient global
default logger to fall back to (see this crate’s other “no
reassignable package-level state” deviations), and no caller outside
the ported tests currently needs one.
Fields§
§log_level: Option<LogLevel>§stderr_log_level: Option<LogLevel>§failure_log_level: Option<LogLevel>§disable_streaming: bool§stdin: Option<Box<dyn Read + Send>>§env: Option<Vec<String>>§timeout: Option<Duration>§log_writer: Option<Arc<Mutex<Vec<u8>>>>Trait Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for Options
impl !Sync for Options
impl !UnwindSafe for Options
impl Freeze for Options
impl Send for Options
impl Unpin for Options
impl UnsafeUnpin for Options
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
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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>
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>
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