diff options
| author | bors <bors@rust-lang.org> | 2015-12-19 06:21:10 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2015-12-19 06:21:10 +0000 |
| commit | 67a2d1f34f917b6e583440b0a86767b2ff8e4d4f (patch) | |
| tree | 1a0eadd1fa29d7c8c01da9fcff3883d2d3d1986e /src/libstd | |
| parent | 440ef8b1548edf9d03a5b880d77a8b476cfb7fa2 (diff) | |
| parent | 21030f1fc9510d9808c0f8352ea8a5eeacfa4ca5 (diff) | |
| download | rust-67a2d1f34f917b6e583440b0a86767b2ff8e4d4f.tar.gz rust-67a2d1f34f917b6e583440b0a86767b2ff8e4d4f.zip | |
Auto merge of #30403 - webmobster:master, r=alexcrichton
I didn't see any reason that debug couldn't be added to this object, since every field derives debug.
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/process.rs | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/libstd/process.rs b/src/libstd/process.rs index 91c3819307f..be1fe9b2a9b 100644 --- a/src/libstd/process.rs +++ b/src/libstd/process.rs @@ -20,6 +20,7 @@ use ffi::OsStr; use fmt; use io::{self, Error, ErrorKind}; use path; +use str; use sys::pipe::{self, AnonPipe}; use sys::process as imp; use sys_common::{AsInner, AsInnerMut, FromInner, IntoInner}; @@ -400,6 +401,32 @@ pub struct Output { pub stderr: Vec<u8>, } +// If either stderr or stdout are valid utf8 strings it prints the valid +// strings, otherwise it prints the byte sequence instead +#[stable(feature = "process_output_debug", since = "1.7.0")] +impl fmt::Debug for Output { + fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { + + let stdout_utf8 = str::from_utf8(&self.stdout); + let stdout_debug: &fmt::Debug = match stdout_utf8 { + Ok(ref str) => str, + Err(_) => &self.stdout + }; + + let stderr_utf8 = str::from_utf8(&self.stderr); + let stderr_debug: &fmt::Debug = match stderr_utf8 { + Ok(ref str) => str, + Err(_) => &self.stderr + }; + + fmt.debug_struct("Output") + .field("status", &self.status) + .field("stdout", stdout_debug) + .field("stderr", stderr_debug) + .finish() + } +} + /// Describes what to do with a standard I/O stream for a child process. #[stable(feature = "process", since = "1.0.0")] pub struct Stdio(StdioImp); |
