diff --git a/CHANGELOG.md b/CHANGELOG.md index 8f1b2a3c2..f6cd03971 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,9 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). ## [Unreleased] +### Added +* `ChildStd{in, out, err}` now implement `AsRawFd`/`AsRawHandle` on Unix/Windows +systems, respectively. ## [0.2.2] - 2018-05-27 ### Fixed diff --git a/src/lib.rs b/src/lib.rs index e6618a747..5a2a055d5 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -643,3 +643,27 @@ mod sys { } } } + +#[cfg(windows)] +mod sys { + use std::os::windows::io::{AsRawHandle, RawHandle}; + use super::{ChildStdin, ChildStdout, ChildStderr}; + + impl AsRawHandle for ChildStdin { + fn as_raw_handle(&self) -> RawHandle { + self.inner.get_ref().as_raw_handle() + } + } + + impl AsRawHandle for ChildStdout { + fn as_raw_handle(&self) -> RawHandle { + self.inner.get_ref().as_raw_handle() + } + } + + impl AsRawHandle for ChildStderr { + fn as_raw_handle(&self) -> RawHandle { + self.inner.get_ref().as_raw_handle() + } + } +}