未验证 提交 2807f28d 编写于 作者: D Dylan DPC 提交者: GitHub

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);
```
...@@ -1273,6 +1273,22 @@ pub fn inherit() -> Stdio { ...@@ -1273,6 +1273,22 @@ pub fn inherit() -> Stdio {
pub fn null() -> Stdio { pub fn null() -> Stdio {
Stdio(imp::Stdio::Null) 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 { impl FromInner<imp::Stdio> for Stdio {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册