Optimize set_{panic,print}(None).
This commit is contained in:
parent
ed3ead013f
commit
de597fca40
|
@ -905,6 +905,10 @@ impl fmt::Debug for StderrLock<'_> {
|
||||||
#[doc(hidden)]
|
#[doc(hidden)]
|
||||||
pub fn set_panic(sink: Option<Box<dyn Write + Send>>) -> Option<Box<dyn Write + Send>> {
|
pub fn set_panic(sink: Option<Box<dyn Write + Send>>) -> Option<Box<dyn Write + Send>> {
|
||||||
use crate::mem;
|
use crate::mem;
|
||||||
|
if sink.is_none() && !LOCAL_STREAMS.load(Ordering::Relaxed) {
|
||||||
|
// LOCAL_STDERR is definitely None since LOCAL_STREAMS is false.
|
||||||
|
return None;
|
||||||
|
}
|
||||||
let s = LOCAL_STDERR.with(move |slot| mem::replace(&mut *slot.borrow_mut(), sink)).and_then(
|
let s = LOCAL_STDERR.with(move |slot| mem::replace(&mut *slot.borrow_mut(), sink)).and_then(
|
||||||
|mut s| {
|
|mut s| {
|
||||||
let _ = s.flush();
|
let _ = s.flush();
|
||||||
|
@ -932,6 +936,10 @@ pub fn set_panic(sink: Option<Box<dyn Write + Send>>) -> Option<Box<dyn Write +
|
||||||
#[doc(hidden)]
|
#[doc(hidden)]
|
||||||
pub fn set_print(sink: Option<Box<dyn Write + Send>>) -> Option<Box<dyn Write + Send>> {
|
pub fn set_print(sink: Option<Box<dyn Write + Send>>) -> Option<Box<dyn Write + Send>> {
|
||||||
use crate::mem;
|
use crate::mem;
|
||||||
|
if sink.is_none() && !LOCAL_STREAMS.load(Ordering::Relaxed) {
|
||||||
|
// LOCAL_STDOUT is definitely None since LOCAL_STREAMS is false.
|
||||||
|
return None;
|
||||||
|
}
|
||||||
let s = LOCAL_STDOUT.with(move |slot| mem::replace(&mut *slot.borrow_mut(), sink)).and_then(
|
let s = LOCAL_STDOUT.with(move |slot| mem::replace(&mut *slot.borrow_mut(), sink)).and_then(
|
||||||
|mut s| {
|
|mut s| {
|
||||||
let _ = s.flush();
|
let _ = s.flush();
|
||||||
|
|
Loading…
Reference in New Issue