summaryrefslogtreecommitdiffstats
path: root/third_party/rust/tokio-fs/src/stderr.rs
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/rust/tokio-fs/src/stderr.rs')
-rw-r--r--third_party/rust/tokio-fs/src/stderr.rs45
1 files changed, 45 insertions, 0 deletions
diff --git a/third_party/rust/tokio-fs/src/stderr.rs b/third_party/rust/tokio-fs/src/stderr.rs
new file mode 100644
index 0000000000..cf64390757
--- /dev/null
+++ b/third_party/rust/tokio-fs/src/stderr.rs
@@ -0,0 +1,45 @@
+use tokio_io::{AsyncWrite};
+
+use futures::Poll;
+
+use std::io::{self, Write, Stderr as StdStderr};
+
+/// A handle to the standard error stream of a process.
+///
+/// The handle implements the [`AsyncWrite`] trait, but beware that concurrent
+/// writes to `Stderr` must be executed with care.
+///
+/// Created by the [`stderr`] function.
+///
+/// [`stderr`]: fn.stderr.html
+/// [`AsyncWrite`]: trait.AsyncWrite.html
+#[derive(Debug)]
+pub struct Stderr {
+ std: StdStderr,
+}
+
+/// Constructs a new handle to the standard error of the current process.
+///
+/// The returned handle allows writing to standard error from the within the
+/// Tokio runtime.
+pub fn stderr() -> Stderr {
+ let std = io::stderr();
+ Stderr { std }
+}
+
+impl Write for Stderr {
+ fn write(&mut self, buf: &[u8]) -> io::Result<usize> {
+ ::would_block(|| self.std.write(buf))
+ }
+
+ fn flush(&mut self) -> io::Result<()> {
+ ::would_block(|| self.std.flush())
+ }
+}
+
+impl AsyncWrite for Stderr {
+ fn shutdown(&mut self) -> Poll<(), io::Error> {
+ Ok(().into())
+ }
+}
+