diff options
| author | Mark Rousskov <mark.simulacrum@gmail.com> | 2019-12-22 17:42:04 -0500 |
|---|---|---|
| committer | Mark Rousskov <mark.simulacrum@gmail.com> | 2019-12-22 17:42:47 -0500 |
| commit | a06baa56b95674fc626b3c3fd680d6a65357fe60 (patch) | |
| tree | cd9d867c2ca3cff5c1d6b3bd73377c44649fb075 /src/libstd/io | |
| parent | 8eb7c58dbb7b32701af113bc58722d0d1fefb1eb (diff) | |
| download | rust-a06baa56b95674fc626b3c3fd680d6a65357fe60.tar.gz rust-a06baa56b95674fc626b3c3fd680d6a65357fe60.zip | |
Format the world
Diffstat (limited to 'src/libstd/io')
| -rw-r--r-- | src/libstd/io/buffered.rs | 4 | ||||
| -rw-r--r-- | src/libstd/io/cursor.rs | 168 | ||||
| -rw-r--r-- | src/libstd/io/lazy.rs | 9 | ||||
| -rw-r--r-- | src/libstd/io/mod.rs | 3 | ||||
| -rw-r--r-- | src/libstd/io/stdio.rs | 137 |
5 files changed, 189 insertions, 132 deletions
diff --git a/src/libstd/io/buffered.rs b/src/libstd/io/buffered.rs index df259dc2f56..3ba80e76672 100644 --- a/src/libstd/io/buffered.rs +++ b/src/libstd/io/buffered.rs @@ -1043,7 +1043,7 @@ impl<W: Write> Write for LineWriter<W> { } if suffix.iter().map(|s| s.len()).sum::<usize>() == 0 { - return Ok(n) + return Ok(n); } match self.inner.write_vectored(suffix) { Ok(i) => Ok(n + i), @@ -1077,7 +1077,7 @@ where #[cfg(test)] mod tests { use crate::io::prelude::*; - use crate::io::{self, BufReader, BufWriter, LineWriter, SeekFrom, IoSlice}; + use crate::io::{self, BufReader, BufWriter, IoSlice, LineWriter, SeekFrom}; use crate::sync::atomic::{AtomicUsize, Ordering}; use crate::thread; diff --git a/src/libstd/io/cursor.rs b/src/libstd/io/cursor.rs index a94176e7100..1492f70436c 100644 --- a/src/libstd/io/cursor.rs +++ b/src/libstd/io/cursor.rs @@ -1,7 +1,7 @@ use crate::io::prelude::*; use crate::cmp; -use crate::io::{self, Initializer, SeekFrom, Error, ErrorKind, IoSlice, IoSliceMut}; +use crate::io::{self, Error, ErrorKind, Initializer, IoSlice, IoSliceMut, SeekFrom}; use core::convert::TryInto; @@ -113,7 +113,9 @@ impl<T> Cursor<T> { /// let vec = buff.into_inner(); /// ``` #[stable(feature = "rust1", since = "1.0.0")] - pub fn into_inner(self) -> T { self.inner } + pub fn into_inner(self) -> T { + self.inner + } /// Gets a reference to the underlying value in this cursor. /// @@ -129,7 +131,9 @@ impl<T> Cursor<T> { /// let reference = buff.get_ref(); /// ``` #[stable(feature = "rust1", since = "1.0.0")] - pub fn get_ref(&self) -> &T { &self.inner } + pub fn get_ref(&self) -> &T { + &self.inner + } /// Gets a mutable reference to the underlying value in this cursor. /// @@ -148,7 +152,9 @@ impl<T> Cursor<T> { /// let reference = buff.get_mut(); /// ``` #[stable(feature = "rust1", since = "1.0.0")] - pub fn get_mut(&mut self) -> &mut T { &mut self.inner } + pub fn get_mut(&mut self) -> &mut T { + &mut self.inner + } /// Returns the current position of this cursor. /// @@ -170,7 +176,9 @@ impl<T> Cursor<T> { /// assert_eq!(buff.position(), 1); /// ``` #[stable(feature = "rust1", since = "1.0.0")] - pub fn position(&self) -> u64 { self.pos } + pub fn position(&self) -> u64 { + self.pos + } /// Sets the position of this cursor. /// @@ -190,14 +198,22 @@ impl<T> Cursor<T> { /// assert_eq!(buff.position(), 4); /// ``` #[stable(feature = "rust1", since = "1.0.0")] - pub fn set_position(&mut self, pos: u64) { self.pos = pos; } + pub fn set_position(&mut self, pos: u64) { + self.pos = pos; + } } #[stable(feature = "rust1", since = "1.0.0")] -impl<T> io::Seek for Cursor<T> where T: AsRef<[u8]> { +impl<T> io::Seek for Cursor<T> +where + T: AsRef<[u8]>, +{ fn seek(&mut self, style: SeekFrom) -> io::Result<u64> { let (base_pos, offset) = match style { - SeekFrom::Start(n) => { self.pos = n; return Ok(n); } + SeekFrom::Start(n) => { + self.pos = n; + return Ok(n); + } SeekFrom::End(n) => (self.inner.as_ref().len() as u64, n), SeekFrom::Current(n) => (self.pos, n), }; @@ -207,9 +223,14 @@ impl<T> io::Seek for Cursor<T> where T: AsRef<[u8]> { base_pos.checked_sub((offset.wrapping_neg()) as u64) }; match new_pos { - Some(n) => {self.pos = n; Ok(self.pos)} - None => Err(Error::new(ErrorKind::InvalidInput, - "invalid seek to a negative or overflowing position")) + Some(n) => { + self.pos = n; + Ok(self.pos) + } + None => Err(Error::new( + ErrorKind::InvalidInput, + "invalid seek to a negative or overflowing position", + )), } } @@ -223,7 +244,10 @@ impl<T> io::Seek for Cursor<T> where T: AsRef<[u8]> { } #[stable(feature = "rust1", since = "1.0.0")] -impl<T> Read for Cursor<T> where T: AsRef<[u8]> { +impl<T> Read for Cursor<T> +where + T: AsRef<[u8]>, +{ fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> { let n = Read::read(&mut self.fill_buf()?, buf)?; self.pos += n as u64; @@ -256,12 +280,17 @@ impl<T> Read for Cursor<T> where T: AsRef<[u8]> { } #[stable(feature = "rust1", since = "1.0.0")] -impl<T> BufRead for Cursor<T> where T: AsRef<[u8]> { +impl<T> BufRead for Cursor<T> +where + T: AsRef<[u8]>, +{ fn fill_buf(&mut self) -> io::Result<&[u8]> { let amt = cmp::min(self.pos, self.inner.as_ref().len() as u64); Ok(&self.inner.as_ref()[(amt as usize)..]) } - fn consume(&mut self, amt: usize) { self.pos += amt as u64; } + fn consume(&mut self, amt: usize) { + self.pos += amt as u64; + } } // Non-resizing write implementation @@ -278,8 +307,7 @@ fn slice_write_vectored( pos_mut: &mut u64, slice: &mut [u8], bufs: &[IoSlice<'_>], -) -> io::Result<usize> -{ +) -> io::Result<usize> { let mut nwritten = 0; for buf in bufs { let n = slice_write(pos_mut, slice, buf)?; @@ -294,8 +322,10 @@ fn slice_write_vectored( // Resizing write implementation fn vec_write(pos_mut: &mut u64, vec: &mut Vec<u8>, buf: &[u8]) -> io::Result<usize> { let pos: usize = (*pos_mut).try_into().map_err(|_| { - Error::new(ErrorKind::InvalidInput, - "cursor position exceeds maximum possible vector length") + Error::new( + ErrorKind::InvalidInput, + "cursor position exceeds maximum possible vector length", + ) })?; // Make sure the internal buffer is as least as big as where we // currently are @@ -322,8 +352,7 @@ fn vec_write_vectored( pos_mut: &mut u64, vec: &mut Vec<u8>, bufs: &[IoSlice<'_>], -) -> io::Result<usize> -{ +) -> io::Result<usize> { let mut nwritten = 0; for buf in bufs { nwritten += vec_write(pos_mut, vec, buf)?; @@ -344,7 +373,9 @@ impl Write for Cursor<&mut [u8]> { } #[inline] - fn flush(&mut self) -> io::Result<()> { Ok(()) } + fn flush(&mut self) -> io::Result<()> { + Ok(()) + } } #[stable(feature = "cursor_mut_vec", since = "1.25.0")] @@ -358,7 +389,9 @@ impl Write for Cursor<&mut Vec<u8>> { } #[inline] - fn flush(&mut self) -> io::Result<()> { Ok(()) } + fn flush(&mut self) -> io::Result<()> { + Ok(()) + } } #[stable(feature = "rust1", since = "1.0.0")] @@ -372,7 +405,9 @@ impl Write for Cursor<Vec<u8>> { } #[inline] - fn flush(&mut self) -> io::Result<()> { Ok(()) } + fn flush(&mut self) -> io::Result<()> { + Ok(()) + } } #[stable(feature = "cursor_box_slice", since = "1.5.0")] @@ -388,13 +423,15 @@ impl Write for Cursor<Box<[u8]>> { } #[inline] - fn flush(&mut self) -> io::Result<()> { Ok(()) } + fn flush(&mut self) -> io::Result<()> { + Ok(()) + } } #[cfg(test)] mod tests { use crate::io::prelude::*; - use crate::io::{Cursor, SeekFrom, IoSlice, IoSliceMut}; + use crate::io::{Cursor, IoSlice, IoSliceMut, SeekFrom}; #[test] fn test_vec_writer() { @@ -402,9 +439,12 @@ mod tests { assert_eq!(writer.write(&[0]).unwrap(), 1); assert_eq!(writer.write(&[1, 2, 3]).unwrap(), 3); assert_eq!(writer.write(&[4, 5, 6, 7]).unwrap(), 4); - assert_eq!(writer.write_vectored( - &[IoSlice::new(&[]), IoSlice::new(&[8, 9]), IoSlice::new(&[10])], - ).unwrap(), 3); + assert_eq!( + writer + .write_vectored(&[IoSlice::new(&[]), IoSlice::new(&[8, 9]), IoSlice::new(&[10])],) + .unwrap(), + 3 + ); let b: &[_] = &[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; assert_eq!(writer, b); } @@ -415,9 +455,12 @@ mod tests { assert_eq!(writer.write(&[0]).unwrap(), 1); assert_eq!(writer.write(&[1, 2, 3]).unwrap(), 3); assert_eq!(writer.write(&[4, 5, 6, 7]).unwrap(), 4); - assert_eq!(writer.write_vectored( - &[IoSlice::new(&[]), IoSlice::new(&[8, 9]), IoSlice::new(&[10])], - ).unwrap(), 3); + assert_eq!( + writer + .write_vectored(&[IoSlice::new(&[]), IoSlice::new(&[8, 9]), IoSlice::new(&[10])],) + .unwrap(), + 3 + ); let b: &[_] = &[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; assert_eq!(&writer.get_ref()[..], b); } @@ -429,9 +472,12 @@ mod tests { assert_eq!(writer.write(&[0]).unwrap(), 1); assert_eq!(writer.write(&[1, 2, 3]).unwrap(), 3); assert_eq!(writer.write(&[4, 5, 6, 7]).unwrap(), 4); - assert_eq!(writer.write_vectored( - &[IoSlice::new(&[]), IoSlice::new(&[8, 9]), IoSlice::new(&[10])], - ).unwrap(), 3); + assert_eq!( + writer + .write_vectored(&[IoSlice::new(&[]), IoSlice::new(&[8, 9]), IoSlice::new(&[10])],) + .unwrap(), + 3 + ); let b: &[_] = &[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; assert_eq!(&writer.get_ref()[..], b); } @@ -461,10 +507,9 @@ mod tests { assert_eq!(writer.write_vectored(&[IoSlice::new(&[0])]).unwrap(), 1); assert_eq!(writer.position(), 1); assert_eq!( - writer.write_vectored(&[ - IoSlice::new(&[1, 2, 3]), - IoSlice::new(&[4, 5, 6, 7]), - ]).unwrap(), + writer + .write_vectored(&[IoSlice::new(&[1, 2, 3]), IoSlice::new(&[4, 5, 6, 7]),]) + .unwrap(), 7, ); assert_eq!(writer.position(), 8); @@ -507,9 +552,9 @@ mod tests { assert_eq!(writer.write_vectored(&[IoSlice::new(&[0])]).unwrap(), 1); assert_eq!(writer.position(), 1); assert_eq!( - writer.write_vectored( - &[IoSlice::new(&[1, 2, 3]), IoSlice::new(&[4, 5, 6, 7])], - ).unwrap(), + writer + .write_vectored(&[IoSlice::new(&[1, 2, 3]), IoSlice::new(&[4, 5, 6, 7])],) + .unwrap(), 7, ); assert_eq!(writer.position(), 8); @@ -546,7 +591,6 @@ mod tests { assert_eq!(writer.position(), 7); assert_eq!(writer.write(&[4]).unwrap(), 1); assert_eq!(writer.position(), 8); - } let b: &[_] = &[1, 3, 2, 0, 0, 0, 0, 4]; assert_eq!(buf, b); @@ -591,10 +635,9 @@ mod tests { assert_eq!(reader.position(), 0); let mut buf = [0]; assert_eq!( - reader.read_vectored(&mut [ - IoSliceMut::new(&mut []), - IoSliceMut::new(&mut buf), - ]).unwrap(), + reader + .read_vectored(&mut [IoSliceMut::new(&mut []), IoSliceMut::new(&mut buf),]) + .unwrap(), 1, ); assert_eq!(reader.position(), 1); @@ -603,10 +646,9 @@ mod tests { let mut buf1 = [0; 4]; let mut buf2 = [0; 4]; assert_eq!( - reader.read_vectored(&mut [ - IoSliceMut::new(&mut buf1), - IoSliceMut::new(&mut buf2), - ]).unwrap(), + reader + .read_vectored(&mut [IoSliceMut::new(&mut buf1), IoSliceMut::new(&mut buf2),]) + .unwrap(), 7, ); let b1: &[_] = &[1, 2, 3, 4]; @@ -646,10 +688,9 @@ mod tests { assert_eq!(reader.position(), 0); let mut buf = [0]; assert_eq!( - reader.read_vectored(&mut [ - IoSliceMut::new(&mut []), - IoSliceMut::new(&mut buf), - ]).unwrap(), + reader + .read_vectored(&mut [IoSliceMut::new(&mut []), IoSliceMut::new(&mut buf),]) + .unwrap(), 1, ); assert_eq!(reader.position(), 1); @@ -658,9 +699,9 @@ mod tests { let mut buf1 = [0; 4]; let mut buf2 = [0; 4]; assert_eq!( - reader.read_vectored( - &mut [IoSliceMut::new(&mut buf1), IoSliceMut::new(&mut buf2)], - ).unwrap(), + reader + .read_vectored(&mut [IoSliceMut::new(&mut buf1), IoSliceMut::new(&mut buf2)],) + .unwrap(), 7, ); let b1: &[_] = &[1, 2, 3, 4]; @@ -708,10 +749,9 @@ mod tests { assert_eq!(reader.read_vectored(&mut [IoSliceMut::new(&mut buf)]).unwrap(), 0); let mut buf = [0]; assert_eq!( - reader.read_vectored(&mut [ - IoSliceMut::new(&mut []), - IoSliceMut::new(&mut buf), - ]).unwrap(), + reader + .read_vectored(&mut [IoSliceMut::new(&mut []), IoSliceMut::new(&mut buf),]) + .unwrap(), 1, ); assert_eq!(reader.len(), 7); @@ -720,9 +760,9 @@ mod tests { let mut buf1 = [0; 4]; let mut buf2 = [0; 4]; assert_eq!( - reader.read_vectored( - &mut [IoSliceMut::new(&mut buf1), IoSliceMut::new(&mut buf2)], - ).unwrap(), + reader + .read_vectored(&mut [IoSliceMut::new(&mut buf1), IoSliceMut::new(&mut buf2)],) + .unwrap(), 7, ); let b1: &[_] = &[1, 2, 3, 4]; diff --git a/src/libstd/io/lazy.rs b/src/libstd/io/lazy.rs index e864aa2c864..1968d498bbe 100644 --- a/src/libstd/io/lazy.rs +++ b/src/libstd/io/lazy.rs @@ -11,16 +11,15 @@ pub struct Lazy<T> { } #[inline] -const fn done<T>() -> *mut Arc<T> { 1_usize as *mut _ } +const fn done<T>() -> *mut Arc<T> { + 1_usize as *mut _ +} unsafe impl<T> Sync for Lazy<T> {} impl<T> Lazy<T> { pub const fn new() -> Lazy<T> { - Lazy { - lock: Mutex::new(), - ptr: Cell::new(ptr::null_mut()), - } + Lazy { lock: Mutex::new(), ptr: Cell::new(ptr::null_mut()) } } } diff --git a/src/libstd/io/mod.rs b/src/libstd/io/mod.rs index 587ac243267..95c8934b3d6 100644 --- a/src/libstd/io/mod.rs +++ b/src/libstd/io/mod.rs @@ -2765,8 +2765,7 @@ mod tests { let buf1 = [1; 8]; let buf2 = [2; 16]; let buf3 = [3; 8]; - let mut bufs = - &mut [IoSlice::new(&buf1), IoSlice::new(&buf2), IoSlice::new(&buf3)][..]; + let mut bufs = &mut [IoSlice::new(&buf1), IoSlice::new(&buf2), IoSlice::new(&buf3)][..]; // Only in a single buffer.. bufs = IoSlice::advance(bufs, 1); diff --git a/src/libstd/io/stdio.rs b/src/libstd/io/stdio.rs index 4aa35884fb4..6add644dcc2 100644 --- a/src/libstd/io/stdio.rs +++ b/src/libstd/io/stdio.rs @@ -5,7 +5,7 @@ use crate::io::prelude::*; use crate::cell::RefCell; use crate::fmt; use crate::io::lazy::Lazy; -use crate::io::{self, Initializer, BufReader, LineWriter, IoSlice, IoSliceMut}; +use crate::io::{self, BufReader, Initializer, IoSlice, IoSliceMut, LineWriter}; use crate::sync::{Arc, Mutex, MutexGuard}; use crate::sys::stdio; use crate::sys_common::remutex::{ReentrantMutex, ReentrantMutexGuard}; @@ -50,7 +50,9 @@ struct StderrRaw(stdio::Stderr); /// handles is **not** available to raw handles returned from this function. /// /// The returned handle has no external synchronization or buffering. -fn stdin_raw() -> io::Result<StdinRaw> { stdio::Stdin::new().map(StdinRaw) } +fn stdin_raw() -> io::Result<StdinRaw> { + stdio::Stdin::new().map(StdinRaw) +} /// Constructs a new raw handle to the standard output stream of this process. /// @@ -61,7 +63,9 @@ fn stdin_raw() -> io::Result<StdinRaw> { stdio::Stdin::new().map(StdinRaw) } /// /// The returned handle has no external synchronization or buffering layered on /// top. -fn stdout_raw() -> io::Result<StdoutRaw> { stdio::Stdout::new().map(StdoutRaw) } +fn stdout_raw() -> io::Result<StdoutRaw> { + stdio::Stdout::new().map(StdoutRaw) +} /// Constructs a new raw handle to the standard error stream of this process. /// @@ -70,10 +74,14 @@ fn stdout_raw() -> io::Result<StdoutRaw> { stdio::Stdout::new().map(StdoutRaw) } /// /// The returned handle has no external synchronization or buffering layered on /// top. -fn stderr_raw() -> io::Result<StderrRaw> { stdio::Stderr::new().map(StderrRaw) } +fn stderr_raw() -> io::Result<StderrRaw> { + stdio::Stderr::new().map(StderrRaw) +} impl Read for StdinRaw { - fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> { self.0.read(buf) } + fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> { + self.0.read(buf) + } fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> io::Result<usize> { self.0.read_vectored(bufs) @@ -85,22 +93,30 @@ impl Read for StdinRaw { } } impl Write for StdoutRaw { - fn write(&mut self, buf: &[u8]) -> io::Result<usize> { self.0.write(buf) } + fn write(&mut self, buf: &[u8]) -> io::Result<usize> { + self.0.write(buf) + } fn write_vectored(&mut self, bufs: &[IoSlice<'_>]) -> io::Result<usize> { self.0.write_vectored(bufs) } - fn flush(&mut self) -> io::Result<()> { self.0.flush() } + fn flush(&mut self) -> io::Result<()> { + self.0.flush() + } } impl Write for StderrRaw { - fn write(&mut self, buf: &[u8]) -> io::Result<usize> { self.0.write(buf) } + fn write(&mut self, buf: &[u8]) -> io::Result<usize> { + self.0.write(buf) + } fn write_vectored(&mut self, bufs: &[IoSlice<'_>]) -> io::Result<usize> { self.0.write_vectored(bufs) } - fn flush(&mut self) -> io::Result<()> { self.0.flush() } + fn flush(&mut self) -> io::Result<()> { + self.0.flush() + } } enum Maybe<T> { @@ -112,7 +128,7 @@ impl<W: io::Write> io::Write for Maybe<W> { fn write(&mut self, buf: &[u8]) -> io::Result<usize> { match *self { Maybe::Real(ref mut w) => handle_ebadf(w.write(buf), buf.len()), - Maybe::Fake => Ok(buf.len()) + Maybe::Fake => Ok(buf.len()), } } @@ -127,7 +143,7 @@ impl<W: io::Write> io::Write for Maybe<W> { fn flush(&mut self) -> io::Result<()> { match *self { Maybe::Real(ref mut w) => handle_ebadf(w.flush(), ()), - Maybe::Fake => Ok(()) + Maybe::Fake => Ok(()), } } } @@ -136,14 +152,14 @@ impl<R: io::Read> io::Read for Maybe<R> { fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> { match *self { Maybe::Real(ref mut r) => handle_ebadf(r.read(buf), 0), - Maybe::Fake => Ok(0) + Maybe::Fake => Ok(0), } } fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> io::Result<usize> { match self { Maybe::Real(r) => handle_ebadf(r.read_vectored(bufs), 0), - Maybe::Fake => Ok(0) + Maybe::Fake => Ok(0), } } } @@ -151,7 +167,7 @@ impl<R: io::Read> io::Read for Maybe<R> { fn handle_ebadf<T>(r: io::Result<T>, default: T) -> io::Result<T> { match r { Err(ref e) if stdio::is_ebadf(e) => Ok(default), - r => r + r => r, } } @@ -242,16 +258,14 @@ pub struct StdinLock<'a> { pub fn stdin() -> Stdin { static INSTANCE: Lazy<Mutex<BufReader<Maybe<StdinRaw>>>> = Lazy::new(); return Stdin { - inner: unsafe { - INSTANCE.get(stdin_init).expect("cannot access stdin during shutdown") - }, + inner: unsafe { INSTANCE.get(stdin_init).expect("cannot access stdin during shutdown") }, }; fn stdin_init() -> Arc<Mutex<BufReader<Maybe<StdinRaw>>>> { // This must not reentrantly access `INSTANCE` let stdin = match stdin_raw() { Ok(stdin) => Maybe::Real(stdin), - _ => Maybe::Fake + _ => Maybe::Fake, }; Arc::new(Mutex::new(BufReader::with_capacity(stdio::STDIN_BUF_SIZE, stdin))) @@ -370,8 +384,12 @@ impl Read for StdinLock<'_> { #[stable(feature = "rust1", since = "1.0.0")] impl BufRead for StdinLock<'_> { - fn fill_buf(&mut self) -> io::Result<&[u8]> { self.inner.fill_buf() } - fn consume(&mut self, n: usize) { self.inner.consume(n) } + fn fill_buf(&mut self) -> io::Result<&[u8]> { + self.inner.fill_buf() + } + fn consume(&mut self, n: usize) { + self.inner.consume(n) + } } #[stable(feature = "std_debug", since = "1.16.0")] @@ -466,9 +484,7 @@ pub struct StdoutLock<'a> { pub fn stdout() -> Stdout { static INSTANCE: Lazy<ReentrantMutex<RefCell<LineWriter<Maybe<StdoutRaw>>>>> = Lazy::new(); return Stdout { - inner: unsafe { - INSTANCE.get(stdout_init).expect("cannot access stdout during shutdown") - }, + inner: unsafe { INSTANCE.get(stdout_init).expect("cannot access stdout during shutdown") }, }; fn stdout_init() -> Arc<ReentrantMutex<RefCell<LineWriter<Maybe<StdoutRaw>>>>> { @@ -625,9 +641,7 @@ pub struct StderrLock<'a> { pub fn stderr() -> Stderr { static INSTANCE: Lazy<ReentrantMutex<RefCell<Maybe<StderrRaw>>>> = Lazy::new(); return Stderr { - inner: unsafe { - INSTANCE.get(stderr_init).expect("cannot access stderr during shutdown") - }, + inner: unsafe { INSTANCE.get(stderr_init).expect("cannot access stderr during shutdown") }, }; fn stderr_init() -> Arc<ReentrantMutex<RefCell<Maybe<StderrRaw>>>> { @@ -720,16 +734,16 @@ impl fmt::Debug for StderrLock<'_> { /// /// Note that this does not need to be called for all new threads; the default /// output handle is to the process's stderr stream. -#[unstable(feature = "set_stdio", - reason = "this function may disappear completely or be replaced \ +#[unstable( + feature = "set_stdio", + reason = "this function may disappear completely or be replaced \ with a more general mechanism", - issue = "none")] + issue = "none" +)] #[doc(hidden)] pub fn set_panic(sink: Option<Box<dyn Write + Send>>) -> Option<Box<dyn Write + Send>> { use crate::mem; - LOCAL_STDERR.with(move |slot| { - mem::replace(&mut *slot.borrow_mut(), sink) - }).and_then(|mut s| { + LOCAL_STDERR.with(move |slot| mem::replace(&mut *slot.borrow_mut(), sink)).and_then(|mut s| { let _ = s.flush(); Some(s) }) @@ -743,16 +757,16 @@ pub fn set_panic(sink: Option<Box<dyn Write + Send>>) -> Option<Box<dyn Write + /// /// Note that this does not need to be called for all new threads; the default /// output handle is to the process's stdout stream. -#[unstable(feature = "set_stdio", - reason = "this function may disappear completely or be replaced \ +#[unstable( + feature = "set_stdio", + reason = "this function may disappear completely or be replaced \ with a more general mechanism", - issue = "none")] + issue = "none" +)] #[doc(hidden)] pub fn set_print(sink: Option<Box<dyn Write + Send>>) -> Option<Box<dyn Write + Send>> { use crate::mem; - LOCAL_STDOUT.with(move |slot| { - mem::replace(&mut *slot.borrow_mut(), sink) - }).and_then(|mut s| { + LOCAL_STDOUT.with(move |slot| mem::replace(&mut *slot.borrow_mut(), sink)).and_then(|mut s| { let _ = s.flush(); Some(s) }) @@ -770,41 +784,44 @@ pub fn set_print(sink: Option<Box<dyn Write + Send>>) -> Option<Box<dyn Write + /// However, if the actual I/O causes an error, this function does panic. fn print_to<T>( args: fmt::Arguments<'_>, - local_s: &'static LocalKey<RefCell<Option<Box<dyn Write+Send>>>>, + local_s: &'static LocalKey<RefCell<Option<Box<dyn Write + Send>>>>, global_s: fn() -> T, label: &str, -) -where +) where T: Write, { - let result = local_s.try_with(|s| { - if let Ok(mut borrowed) = s.try_borrow_mut() { - if let Some(w) = borrowed.as_mut() { - return w.write_fmt(args); + let result = local_s + .try_with(|s| { + if let Ok(mut borrowed) = s.try_borrow_mut() { + if let Some(w) = borrowed.as_mut() { + return w.write_fmt(args); + } } - } - global_s().write_fmt(args) - }).unwrap_or_else(|_| { - global_s().write_fmt(args) - }); + global_s().write_fmt(args) + }) + .unwrap_or_else(|_| global_s().write_fmt(args)); if let Err(e) = result { panic!("failed printing to {}: {}", label, e); } } -#[unstable(feature = "print_internals", - reason = "implementation detail which may disappear or be replaced at any time", - issue = "none")] +#[unstable( + feature = "print_internals", + reason = "implementation detail which may disappear or be replaced at any time", + issue = "none" +)] #[doc(hidden)] #[cfg(not(test))] pub fn _print(args: fmt::Arguments<'_>) { print_to(args, &LOCAL_STDOUT, stdout, "stdout"); } -#[unstable(feature = "print_internals", - reason = "implementation detail which may disappear or be replaced at any time", - issue = "none")] +#[unstable( + feature = "print_internals", + reason = "implementation detail which may disappear or be replaced at any time", + issue = "none" +)] #[doc(hidden)] #[cfg(not(test))] pub fn _eprint(args: fmt::Arguments<'_>) { @@ -816,9 +833,9 @@ pub use realstd::io::{_eprint, _print}; #[cfg(test)] mod tests { - use crate::panic::{UnwindSafe, RefUnwindSafe}; - use crate::thread; use super::*; + use crate::panic::{RefUnwindSafe, UnwindSafe}; + use crate::thread; #[test] fn stdout_unwind_safe() { @@ -852,7 +869,9 @@ mod tests { let _a = stderr(); let _a = _a.lock(); panic!(); - }).join().unwrap_err(); + }) + .join() + .unwrap_err(); let _a = stdin(); let _a = _a.lock(); |
