Implement AsRawHandle for Std* on Windows

This commit is contained in:
Ian Douglas Scott 2017-07-28 16:34:16 -07:00
parent e9c55d1f79
commit eac01f123d
No known key found for this signature in database
GPG Key ID: 4924E10E199B5959

View File

@ -15,6 +15,7 @@ use os::windows::raw;
use net;
use sys_common::{self, AsInner, FromInner, IntoInner};
use sys;
use io;
use sys::c;
/// Raw HANDLEs.
@ -71,6 +72,27 @@ impl AsRawHandle for fs::File {
}
}
#[stable(feature = "asraw_stdio", since = "1.21.0")]
impl AsRawHandle for io::Stdin {
fn as_raw_handle(&self) -> RawHandle {
unsafe { c::GetStdHandle(c::STD_INPUT_HANDLE) } as RawHandle
}
}
#[stable(feature = "asraw_stdio", since = "1.21.0")]
impl AsRawHandle for io::Stdout {
fn as_raw_handle(&self) -> RawHandle {
unsafe { c::GetStdHandle(c::STD_OUTPUT_HANDLE) } as RawHandle
}
}
#[stable(feature = "asraw_stdio", since = "1.21.0")]
impl AsRawHandle for io::Stderr {
fn as_raw_handle(&self) -> RawHandle {
unsafe { c::GetStdHandle(c::STD_ERROR_HANDLE) } as RawHandle
}
}
#[stable(feature = "from_raw_os", since = "1.1.0")]
impl FromRawHandle for fs::File {
unsafe fn from_raw_handle(handle: RawHandle) -> fs::File {