]> git.lizzy.rs Git - rust.git/commitdiff
Implement AsRawHandle for Std* on Windows
authorIan Douglas Scott <ian@iandouglasscott.com>
Fri, 28 Jul 2017 23:34:16 +0000 (16:34 -0700)
committerIan Douglas Scott <ian@iandouglasscott.com>
Thu, 3 Aug 2017 19:57:53 +0000 (12:57 -0700)
src/libstd/sys/windows/ext/io.rs

index 2ddb6c65fd357c692518f089c1df6a6eb3ea79c3..829e44cebf771759843f40a22ad40277959abf01 100644 (file)
@@ -15,6 +15,7 @@
 use net;
 use sys_common::{self, AsInner, FromInner, IntoInner};
 use sys;
+use io;
 use sys::c;
 
 /// Raw HANDLEs.
@@ -71,6 +72,27 @@ fn as_raw_handle(&self) -> RawHandle {
     }
 }
 
+#[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 {