Struct insta_cmd::StdinCommand
source · [−]pub struct StdinCommand { /* private fields */ }
Expand description
Like Command
but sends some input to stdin.
Implementations
sourceimpl StdinCommand
impl StdinCommand
Methods from Deref<Target = Command>
1.0.0 · sourcepub fn arg<S>(&mut self, arg: S) -> &mut Command where
S: AsRef<OsStr>,
pub fn arg<S>(&mut self, arg: S) -> &mut Command where
S: AsRef<OsStr>,
Adds an argument to pass to the program.
Only one argument can be passed per use. So instead of:
.arg("-C /path/to/repo")
usage would be:
.arg("-C")
.arg("/path/to/repo")
To pass multiple arguments see args
.
Note that the argument is not passed through a shell, but given literally to the program. This means that shell syntax like quotes, escaped characters, word splitting, glob patterns, substitution, etc. have no effect.
Examples
Basic usage:
use std::process::Command;
Command::new("ls")
.arg("-l")
.arg("-a")
.spawn()
.expect("ls command failed to start");
1.0.0 · sourcepub fn args<I, S>(&mut self, args: I) -> &mut Command where
I: IntoIterator<Item = S>,
S: AsRef<OsStr>,
pub fn args<I, S>(&mut self, args: I) -> &mut Command where
I: IntoIterator<Item = S>,
S: AsRef<OsStr>,
Adds multiple arguments to pass to the program.
To pass a single argument see arg
.
Note that the arguments are not passed through a shell, but given literally to the program. This means that shell syntax like quotes, escaped characters, word splitting, glob patterns, substitution, etc. have no effect.
Examples
Basic usage:
use std::process::Command;
Command::new("ls")
.args(["-l", "-a"])
.spawn()
.expect("ls command failed to start");
1.0.0 · sourcepub fn env<K, V>(&mut self, key: K, val: V) -> &mut Command where
K: AsRef<OsStr>,
V: AsRef<OsStr>,
pub fn env<K, V>(&mut self, key: K, val: V) -> &mut Command where
K: AsRef<OsStr>,
V: AsRef<OsStr>,
Inserts or updates an environment variable mapping.
Note that environment variable names are case-insensitive (but case-preserving) on Windows, and case-sensitive on all other platforms.
Examples
Basic usage:
use std::process::Command;
Command::new("ls")
.env("PATH", "/bin")
.spawn()
.expect("ls command failed to start");
1.19.0 · sourcepub fn envs<I, K, V>(&mut self, vars: I) -> &mut Command where
I: IntoIterator<Item = (K, V)>,
K: AsRef<OsStr>,
V: AsRef<OsStr>,
pub fn envs<I, K, V>(&mut self, vars: I) -> &mut Command where
I: IntoIterator<Item = (K, V)>,
K: AsRef<OsStr>,
V: AsRef<OsStr>,
Adds or updates multiple environment variable mappings.
Examples
Basic usage:
use std::process::{Command, Stdio};
use std::env;
use std::collections::HashMap;
let filtered_env : HashMap<String, String> =
env::vars().filter(|&(ref k, _)|
k == "TERM" || k == "TZ" || k == "LANG" || k == "PATH"
).collect();
Command::new("printenv")
.stdin(Stdio::null())
.stdout(Stdio::inherit())
.env_clear()
.envs(&filtered_env)
.spawn()
.expect("printenv failed to start");
1.0.0 · sourcepub fn env_remove<K>(&mut self, key: K) -> &mut Command where
K: AsRef<OsStr>,
pub fn env_remove<K>(&mut self, key: K) -> &mut Command where
K: AsRef<OsStr>,
Removes an environment variable mapping.
Examples
Basic usage:
use std::process::Command;
Command::new("ls")
.env_remove("PATH")
.spawn()
.expect("ls command failed to start");
1.0.0 · sourcepub fn env_clear(&mut self) -> &mut Command
pub fn env_clear(&mut self) -> &mut Command
Clears the entire environment map for the child process.
Examples
Basic usage:
use std::process::Command;
Command::new("ls")
.env_clear()
.spawn()
.expect("ls command failed to start");
1.0.0 · sourcepub fn current_dir<P>(&mut self, dir: P) -> &mut Command where
P: AsRef<Path>,
pub fn current_dir<P>(&mut self, dir: P) -> &mut Command where
P: AsRef<Path>,
Sets the working directory for the child process.
Platform-specific behavior
If the program path is relative (e.g., "./script.sh"
), it’s ambiguous
whether it should be interpreted relative to the parent’s working
directory or relative to current_dir
. The behavior in this case is
platform specific and unstable, and it’s recommended to use
canonicalize
to get an absolute program path instead.
Examples
Basic usage:
use std::process::Command;
Command::new("ls")
.current_dir("/bin")
.spawn()
.expect("ls command failed to start");
1.0.0 · sourcepub fn stdin<T>(&mut self, cfg: T) -> &mut Command where
T: Into<Stdio>,
pub fn stdin<T>(&mut self, cfg: T) -> &mut Command where
T: Into<Stdio>,
Configuration for the child process’s standard input (stdin) handle.
Defaults to inherit
when used with spawn
or status
, and
defaults to piped
when used with output
.
Examples
Basic usage:
use std::process::{Command, Stdio};
Command::new("ls")
.stdin(Stdio::null())
.spawn()
.expect("ls command failed to start");
1.0.0 · sourcepub fn stdout<T>(&mut self, cfg: T) -> &mut Command where
T: Into<Stdio>,
pub fn stdout<T>(&mut self, cfg: T) -> &mut Command where
T: Into<Stdio>,
Configuration for the child process’s standard output (stdout) handle.
Defaults to inherit
when used with spawn
or status
, and
defaults to piped
when used with output
.
Examples
Basic usage:
use std::process::{Command, Stdio};
Command::new("ls")
.stdout(Stdio::null())
.spawn()
.expect("ls command failed to start");
1.0.0 · sourcepub fn stderr<T>(&mut self, cfg: T) -> &mut Command where
T: Into<Stdio>,
pub fn stderr<T>(&mut self, cfg: T) -> &mut Command where
T: Into<Stdio>,
Configuration for the child process’s standard error (stderr) handle.
Defaults to inherit
when used with spawn
or status
, and
defaults to piped
when used with output
.
Examples
Basic usage:
use std::process::{Command, Stdio};
Command::new("ls")
.stderr(Stdio::null())
.spawn()
.expect("ls command failed to start");
1.0.0 · sourcepub fn spawn(&mut self) -> Result<Child, Error>
pub fn spawn(&mut self) -> Result<Child, Error>
Executes the command as a child process, returning a handle to it.
By default, stdin, stdout and stderr are inherited from the parent.
Examples
Basic usage:
use std::process::Command;
Command::new("ls")
.spawn()
.expect("ls command failed to start");
1.0.0 · sourcepub fn output(&mut self) -> Result<Output, Error>
pub fn output(&mut self) -> Result<Output, Error>
Executes the command as a child process, waiting for it to finish and collecting all of its output.
By default, stdout and stderr are captured (and used to provide the resulting output). Stdin is not inherited from the parent and any attempt by the child process to read from the stdin stream will result in the stream immediately closing.
Examples
use std::process::Command;
use std::io::{self, Write};
let output = Command::new("/bin/cat")
.arg("file.txt")
.output()
.expect("failed to execute process");
println!("status: {}", output.status);
io::stdout().write_all(&output.stdout).unwrap();
io::stderr().write_all(&output.stderr).unwrap();
assert!(output.status.success());
1.0.0 · sourcepub fn status(&mut self) -> Result<ExitStatus, Error>
pub fn status(&mut self) -> Result<ExitStatus, Error>
Executes a command as a child process, waiting for it to finish and collecting its status.
By default, stdin, stdout and stderr are inherited from the parent.
Examples
use std::process::Command;
let status = Command::new("/bin/cat")
.arg("file.txt")
.status()
.expect("failed to execute process");
println!("process finished with: {status}");
assert!(status.success());
1.57.0 · sourcepub fn get_program(&self) -> &OsStr
pub fn get_program(&self) -> &OsStr
Returns the path to the program that was given to Command::new
.
Examples
use std::process::Command;
let cmd = Command::new("echo");
assert_eq!(cmd.get_program(), "echo");
1.57.0 · sourcepub fn get_args(&self) -> CommandArgs<'_>
pub fn get_args(&self) -> CommandArgs<'_>
Returns an iterator of the arguments that will be passed to the program.
This does not include the path to the program as the first argument;
it only includes the arguments specified with Command::arg
and
Command::args
.
Examples
use std::ffi::OsStr;
use std::process::Command;
let mut cmd = Command::new("echo");
cmd.arg("first").arg("second");
let args: Vec<&OsStr> = cmd.get_args().collect();
assert_eq!(args, &["first", "second"]);
1.57.0 · sourcepub fn get_envs(&self) -> CommandEnvs<'_>
pub fn get_envs(&self) -> CommandEnvs<'_>
Returns an iterator of the environment variables that will be set when the process is spawned.
Each element is a tuple (&OsStr, Option<&OsStr>)
, where the first
value is the key, and the second is the value, which is None
if
the environment variable is to be explicitly removed.
This only includes environment variables explicitly set with
Command::env
, Command::envs
, and Command::env_remove
. It
does not include environment variables that will be inherited by the
child process.
Examples
use std::ffi::OsStr;
use std::process::Command;
let mut cmd = Command::new("ls");
cmd.env("TERM", "dumb").env_remove("TZ");
let envs: Vec<(&OsStr, Option<&OsStr>)> = cmd.get_envs().collect();
assert_eq!(envs, &[
(OsStr::new("TERM"), Some(OsStr::new("dumb"))),
(OsStr::new("TZ"), None)
]);
1.57.0 · sourcepub fn get_current_dir(&self) -> Option<&Path>
pub fn get_current_dir(&self) -> Option<&Path>
Returns the working directory for the child process.
This returns None
if the working directory will not be changed.
Examples
use std::path::Path;
use std::process::Command;
let mut cmd = Command::new("ls");
assert_eq!(cmd.get_current_dir(), None);
cmd.current_dir("/bin");
assert_eq!(cmd.get_current_dir(), Some(Path::new("/bin")));
Trait Implementations
sourceimpl Deref for StdinCommand
impl Deref for StdinCommand
sourceimpl DerefMut for StdinCommand
impl DerefMut for StdinCommand
impl Spawn for StdinCommand
Auto Trait Implementations
impl !RefUnwindSafe for StdinCommand
impl Send for StdinCommand
impl Sync for StdinCommand
impl Unpin for StdinCommand
impl !UnwindSafe for StdinCommand
Blanket Implementations
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