Skip to main content

CommandWrap

Struct CommandWrap 

Source
pub struct CommandWrap { /* private fields */ }
Available on crate feature std only.
Expand description

A wrapper around a Command that allows for additional functionality to be added.

This is the core type of the process-wrap crate. It is a wrapper around a Command.

Implementations§

Source§

impl CommandWrap

Source

pub fn with_new( program: impl AsRef<OsStr>, init: impl FnOnce(&mut Command), ) -> Self

Create from a program name and a closure to configure the command.

This is a convenience method that creates a new Command and then calls the closure to configure it. The Command is then wrapped and returned.

Alternatively, use From/Into to convert a Command to a CommandWrap.

Source

pub fn command(&self) -> &Command

Get a reference to the wrapped command.

Source

pub fn command_mut(&mut self) -> &mut Command

Get a mutable reference to the wrapped command.

Source

pub fn into_command(self) -> Command

Get the wrapped command.

Source

pub fn wrap<W: CommandWrapper + 'static>(&mut self, wrapper: W) -> &mut Self

Add a wrapper to the command.

This is a lazy method, and the wrapper is not actually applied until spawn is called.

Only one wrapper of a given type can be applied to a command. If wrap is called twice with the same type, the existing wrapper will have its extend hook called, which gives it a chance to absorb the new wrapper. If it does not, the new wrapper will be silently discarded.

Returns &mut self for chaining.

Source

pub fn spawn(&mut self) -> Result<Box<dyn ChildWrapper>>

Spawn the command, returning a Child that can be interacted with.

In order, this runs all the pre_spawn hooks, then spawns the command, then runs all the post_spawn hooks, then stacks all the wrap_childs. As it returns a boxed trait object, only the methods from the trait are available directly; however you may downcast to the concrete type of the last applied wrapper if you need to.

Source

pub fn spawn_with( &mut self, spawner: impl FnOnce(&mut Command) -> Result<Child>, ) -> Result<Box<dyn ChildWrapper>>

Spawn the command using a custom spawner function.

This is like spawn, but instead of calling command.spawn() directly, it calls the provided closure to create the child process. This is useful when you need to use a platform-specific or custom spawning mechanism.

The lifecycle is the same as spawn: all pre_spawn hooks run first, then the provided closure is called, then post_spawn hooks, then wrap_child.

Source

pub fn has_wrap<W: CommandWrapper + 'static>(&self) -> bool

Check if a wrapper of a given type is present.

Source

pub fn get_wrap<W: CommandWrapper + 'static>(&self) -> Option<&W>

Get a reference to a wrapper of a given type.

This is useful for getting access to the state of a wrapper, generally from within another wrapper.

Returns None if the wrapper is not present. To merely check if a wrapper is present, use has_wrap instead.

Trait Implementations§

Source§

impl Debug for CommandWrap

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl From<Command> for CommandWrap

Source§

fn from(command: Command) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

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
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more