@@ -11,92 +11,82 @@ pub trait RawStream:
1111{
1212}
1313
14+ impl < T : RawStream + ?Sized > RawStream for & mut T { }
15+ impl < T : RawStream + ?Sized > RawStream for Box < T > { }
16+
1417impl RawStream for std:: io:: Stdout { }
1518
1619impl RawStream for std:: io:: StdoutLock < ' _ > { }
1720
18- impl RawStream for & ' _ mut std:: io:: StdoutLock < ' _ > { }
19-
2021impl RawStream for std:: io:: Stderr { }
2122
2223impl RawStream for std:: io:: StderrLock < ' _ > { }
2324
24- impl RawStream for & ' _ mut std:: io:: StderrLock < ' _ > { }
25-
26- impl RawStream for Box < dyn std:: io:: Write > { }
27-
28- impl RawStream for & ' _ mut Box < dyn std:: io:: Write > { }
25+ impl RawStream for dyn std:: io:: Write { }
2926
3027impl RawStream for Vec < u8 > { }
3128
32- impl RawStream for & ' _ mut Vec < u8 > { }
33-
3429impl RawStream for std:: fs:: File { }
3530
36- impl RawStream for & ' _ mut std:: fs:: File { }
37-
3831#[ allow( deprecated) ]
3932impl RawStream for crate :: Buffer { }
4033
41- #[ allow( deprecated) ]
42- impl RawStream for & ' _ mut crate :: Buffer { }
43-
4434/// Trait to determine if a descriptor/handle refers to a terminal/tty.
4535pub trait IsTerminal : private:: Sealed {
4636 /// Returns `true` if the descriptor/handle refers to a terminal/tty.
4737 fn is_terminal ( & self ) -> bool ;
4838}
4939
50- impl IsTerminal for std :: io :: Stdout {
40+ impl < T : IsTerminal + ? Sized > IsTerminal for & T {
5141 #[ inline]
5242 fn is_terminal ( & self ) -> bool {
53- is_terminal_polyfill :: IsTerminal :: is_terminal ( self )
43+ ( * * self ) . is_terminal ( )
5444 }
5545}
5646
57- impl IsTerminal for std :: io :: StdoutLock < ' _ > {
47+ impl < T : IsTerminal + ? Sized > IsTerminal for & mut T {
5848 #[ inline]
5949 fn is_terminal ( & self ) -> bool {
60- is_terminal_polyfill :: IsTerminal :: is_terminal ( self )
50+ ( * * self ) . is_terminal ( )
6151 }
6252}
6353
64- impl IsTerminal for & ' _ mut std :: io :: StdoutLock < ' _ > {
54+ impl < T : IsTerminal + ? Sized > IsTerminal for Box < T > {
6555 #[ inline]
6656 fn is_terminal ( & self ) -> bool {
6757 ( * * self ) . is_terminal ( )
6858 }
6959}
7060
71- impl IsTerminal for std:: io:: Stderr {
61+ impl IsTerminal for std:: io:: Stdout {
7262 #[ inline]
7363 fn is_terminal ( & self ) -> bool {
7464 is_terminal_polyfill:: IsTerminal :: is_terminal ( self )
7565 }
7666}
7767
78- impl IsTerminal for std:: io:: StderrLock < ' _ > {
68+ impl IsTerminal for std:: io:: StdoutLock < ' _ > {
7969 #[ inline]
8070 fn is_terminal ( & self ) -> bool {
8171 is_terminal_polyfill:: IsTerminal :: is_terminal ( self )
8272 }
8373}
8474
85- impl IsTerminal for & ' _ mut std:: io:: StderrLock < ' _ > {
75+ impl IsTerminal for std:: io:: Stderr {
8676 #[ inline]
8777 fn is_terminal ( & self ) -> bool {
88- ( * * self ) . is_terminal ( )
78+ is_terminal_polyfill :: IsTerminal :: is_terminal ( self )
8979 }
9080}
9181
92- impl IsTerminal for Box < dyn std:: io:: Write > {
82+ impl IsTerminal for std:: io:: StderrLock < ' _ > {
9383 #[ inline]
9484 fn is_terminal ( & self ) -> bool {
95- false
85+ is_terminal_polyfill :: IsTerminal :: is_terminal ( self )
9686 }
9787}
9888
99- impl IsTerminal for & ' _ mut Box < dyn std:: io:: Write > {
89+ impl IsTerminal for dyn std:: io:: Write {
10090 #[ inline]
10191 fn is_terminal ( & self ) -> bool {
10292 false
@@ -110,27 +100,13 @@ impl IsTerminal for Vec<u8> {
110100 }
111101}
112102
113- impl IsTerminal for & ' _ mut Vec < u8 > {
114- #[ inline]
115- fn is_terminal ( & self ) -> bool {
116- false
117- }
118- }
119-
120103impl IsTerminal for std:: fs:: File {
121104 #[ inline]
122105 fn is_terminal ( & self ) -> bool {
123106 is_terminal_polyfill:: IsTerminal :: is_terminal ( self )
124107 }
125108}
126109
127- impl IsTerminal for & ' _ mut std:: fs:: File {
128- #[ inline]
129- fn is_terminal ( & self ) -> bool {
130- ( * * self ) . is_terminal ( )
131- }
132- }
133-
134110#[ allow( deprecated) ]
135111impl IsTerminal for crate :: Buffer {
136112 #[ inline]
@@ -139,14 +115,6 @@ impl IsTerminal for crate::Buffer {
139115 }
140116}
141117
142- #[ allow( deprecated) ]
143- impl IsTerminal for & ' _ mut crate :: Buffer {
144- #[ inline]
145- fn is_terminal ( & self ) -> bool {
146- ( * * self ) . is_terminal ( )
147- }
148- }
149-
150118/// Lock a stream
151119pub trait AsLockedWrite : private:: Sealed {
152120 /// Locked writer type
@@ -194,7 +162,7 @@ impl AsLockedWrite for std::io::StderrLock<'static> {
194162 }
195163}
196164
197- impl AsLockedWrite for Box < dyn std:: io:: Write > {
165+ impl AsLockedWrite for dyn std:: io:: Write {
198166 type Write < ' w > = & ' w mut Self ;
199167
200168 #[ inline]
@@ -234,33 +202,24 @@ impl AsLockedWrite for crate::Buffer {
234202mod private {
235203 pub trait Sealed { }
236204
205+ impl < T : Sealed + ?Sized > Sealed for & T { }
206+ impl < T : Sealed + ?Sized > Sealed for & mut T { }
207+ impl < T : Sealed + ?Sized > Sealed for Box < T > { }
208+
237209 impl Sealed for std:: io:: Stdout { }
238210
239211 impl Sealed for std:: io:: StdoutLock < ' _ > { }
240212
241- impl Sealed for & ' _ mut std:: io:: StdoutLock < ' _ > { }
242-
243213 impl Sealed for std:: io:: Stderr { }
244214
245215 impl Sealed for std:: io:: StderrLock < ' _ > { }
246216
247- impl Sealed for & ' _ mut std:: io:: StderrLock < ' _ > { }
248-
249- impl Sealed for Box < dyn std:: io:: Write > { }
250-
251- impl Sealed for & ' _ mut Box < dyn std:: io:: Write > { }
217+ impl Sealed for dyn std:: io:: Write { }
252218
253219 impl Sealed for Vec < u8 > { }
254220
255- impl Sealed for & ' _ mut Vec < u8 > { }
256-
257221 impl Sealed for std:: fs:: File { }
258222
259- impl Sealed for & ' _ mut std:: fs:: File { }
260-
261223 #[ allow( deprecated) ]
262224 impl Sealed for crate :: Buffer { }
263-
264- #[ allow( deprecated) ]
265- impl Sealed for & ' _ mut crate :: Buffer { }
266225}
0 commit comments