Rollup merge of #97150 - ChrisDenton:stdio-create_pipe, r=m-ou-se
`Stdio::makes_pipe` Wrappers around `std::process::Command` may want to be able to override pipe creation. However, [`std::process::Stdio`](https://doc.rust-lang.org/std/process/struct.Stdio.html) is opaque so there's no way to tell if `Command` was told to create new pipes or not. This is in some ways a more generic (and cross-platform) alternative to #97149. However, unlike that feature, this comes with the price of the user needing to actually create their own pipes rather than reusing the std one. So I think it stands (or not) on its own. # Example ```rust #![feature(stdio_makes_pipe)] use std::process::Stdio; let io = Stdio::piped(); assert_eq!(io.makes_pipe(), true); ```
This commit is contained in:
commit
2807f28de5
@ -1273,6 +1273,22 @@ pub fn inherit() -> Stdio {
|
||||
pub fn null() -> Stdio {
|
||||
Stdio(imp::Stdio::Null)
|
||||
}
|
||||
|
||||
/// Returns `true` if this requires [`Command`] to create a new pipe.
|
||||
///
|
||||
/// # Example
|
||||
///
|
||||
/// ```
|
||||
/// #![feature(stdio_makes_pipe)]
|
||||
/// use std::process::Stdio;
|
||||
///
|
||||
/// let io = Stdio::piped();
|
||||
/// assert_eq!(io.makes_pipe(), true);
|
||||
/// ```
|
||||
#[unstable(feature = "stdio_makes_pipe", issue = "98288")]
|
||||
pub fn makes_pipe(&self) -> bool {
|
||||
matches!(self.0, imp::Stdio::MakePipe)
|
||||
}
|
||||
}
|
||||
|
||||
impl FromInner<imp::Stdio> for Stdio {
|
||||
|
Loading…
Reference in New Issue
Block a user