mirror of
https://github.com/rust-lang/rust.git
synced 2026-04-28 03:07:24 +03:00
e4ca889ed8
std: reorganize pipe implementations Currently, there are two distinct types called `AnonPipe` in `std`: * The one used to implement `io::pipe` (in `sys::anonymous_pipe`) * The one used to implement `Stdin`/`Stdout`/`Stderr` (in `sys::pal::pipe`) On Windows, these actually have different semantics, as one of the handles returned by the `sys::pal::pipe` version is opened for asynchronous operation in order to support `read2`, whereas the `sys::anonymous_pipe` version does not do so. Thus the naming is extremely confusing. To fix this, this PR renames the `sys::anonymous_pipe` version of `AnonPipe` to simply `Pipe`, whereas the `sys::pal::pipe` version is now called `ChildPipe`. Additionally, * `sys::anonymous_pipe` is now also just called `sys::pipe`. * On Windows, `sys::pal::pipe` has been moved to `sys::process` and is now called `sys::process::child_pipe`. * On non-Windows platforms, pipe creation is now exclusively handled by `sys::pipe` and `ChildPipe` is defined as a type alias to `Pipe` within `sys::process`. And lastly, the `read2` function (originally in `sys::pal::pipe`) is now called `read_output` and defined by `sys::process`, as (at least on Windows) it is only usable with `ChildPipe`. Includes rust-lang/rust#146639 for convenience.