@@ -11,92 +11,82 @@ pub trait RawStream:
11
11
{
12
12
}
13
13
14
+ impl < T : RawStream + ?Sized > RawStream for & mut T { }
15
+ impl < T : RawStream + ?Sized > RawStream for Box < T > { }
16
+
14
17
impl RawStream for std:: io:: Stdout { }
15
18
16
19
impl RawStream for std:: io:: StdoutLock < ' _ > { }
17
20
18
- impl RawStream for & ' _ mut std:: io:: StdoutLock < ' _ > { }
19
-
20
21
impl RawStream for std:: io:: Stderr { }
21
22
22
23
impl RawStream for std:: io:: StderrLock < ' _ > { }
23
24
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 { }
29
26
30
27
impl RawStream for Vec < u8 > { }
31
28
32
- impl RawStream for & ' _ mut Vec < u8 > { }
33
-
34
29
impl RawStream for std:: fs:: File { }
35
30
36
- impl RawStream for & ' _ mut std:: fs:: File { }
37
-
38
31
#[ allow( deprecated) ]
39
32
impl RawStream for crate :: Buffer { }
40
33
41
- #[ allow( deprecated) ]
42
- impl RawStream for & ' _ mut crate :: Buffer { }
43
-
44
34
/// Trait to determine if a descriptor/handle refers to a terminal/tty.
45
35
pub trait IsTerminal : private:: Sealed {
46
36
/// Returns `true` if the descriptor/handle refers to a terminal/tty.
47
37
fn is_terminal ( & self ) -> bool ;
48
38
}
49
39
50
- impl IsTerminal for std :: io :: Stdout {
40
+ impl < T : IsTerminal + ? Sized > IsTerminal for & T {
51
41
#[ inline]
52
42
fn is_terminal ( & self ) -> bool {
53
- is_terminal_polyfill :: IsTerminal :: is_terminal ( self )
43
+ ( * * self ) . is_terminal ( )
54
44
}
55
45
}
56
46
57
- impl IsTerminal for std :: io :: StdoutLock < ' _ > {
47
+ impl < T : IsTerminal + ? Sized > IsTerminal for & mut T {
58
48
#[ inline]
59
49
fn is_terminal ( & self ) -> bool {
60
- is_terminal_polyfill :: IsTerminal :: is_terminal ( self )
50
+ ( * * self ) . is_terminal ( )
61
51
}
62
52
}
63
53
64
- impl IsTerminal for & ' _ mut std :: io :: StdoutLock < ' _ > {
54
+ impl < T : IsTerminal + ? Sized > IsTerminal for Box < T > {
65
55
#[ inline]
66
56
fn is_terminal ( & self ) -> bool {
67
57
( * * self ) . is_terminal ( )
68
58
}
69
59
}
70
60
71
- impl IsTerminal for std:: io:: Stderr {
61
+ impl IsTerminal for std:: io:: Stdout {
72
62
#[ inline]
73
63
fn is_terminal ( & self ) -> bool {
74
64
is_terminal_polyfill:: IsTerminal :: is_terminal ( self )
75
65
}
76
66
}
77
67
78
- impl IsTerminal for std:: io:: StderrLock < ' _ > {
68
+ impl IsTerminal for std:: io:: StdoutLock < ' _ > {
79
69
#[ inline]
80
70
fn is_terminal ( & self ) -> bool {
81
71
is_terminal_polyfill:: IsTerminal :: is_terminal ( self )
82
72
}
83
73
}
84
74
85
- impl IsTerminal for & ' _ mut std:: io:: StderrLock < ' _ > {
75
+ impl IsTerminal for std:: io:: Stderr {
86
76
#[ inline]
87
77
fn is_terminal ( & self ) -> bool {
88
- ( * * self ) . is_terminal ( )
78
+ is_terminal_polyfill :: IsTerminal :: is_terminal ( self )
89
79
}
90
80
}
91
81
92
- impl IsTerminal for Box < dyn std:: io:: Write > {
82
+ impl IsTerminal for std:: io:: StderrLock < ' _ > {
93
83
#[ inline]
94
84
fn is_terminal ( & self ) -> bool {
95
- false
85
+ is_terminal_polyfill :: IsTerminal :: is_terminal ( self )
96
86
}
97
87
}
98
88
99
- impl IsTerminal for & ' _ mut Box < dyn std:: io:: Write > {
89
+ impl IsTerminal for dyn std:: io:: Write {
100
90
#[ inline]
101
91
fn is_terminal ( & self ) -> bool {
102
92
false
@@ -110,27 +100,13 @@ impl IsTerminal for Vec<u8> {
110
100
}
111
101
}
112
102
113
- impl IsTerminal for & ' _ mut Vec < u8 > {
114
- #[ inline]
115
- fn is_terminal ( & self ) -> bool {
116
- false
117
- }
118
- }
119
-
120
103
impl IsTerminal for std:: fs:: File {
121
104
#[ inline]
122
105
fn is_terminal ( & self ) -> bool {
123
106
is_terminal_polyfill:: IsTerminal :: is_terminal ( self )
124
107
}
125
108
}
126
109
127
- impl IsTerminal for & ' _ mut std:: fs:: File {
128
- #[ inline]
129
- fn is_terminal ( & self ) -> bool {
130
- ( * * self ) . is_terminal ( )
131
- }
132
- }
133
-
134
110
#[ allow( deprecated) ]
135
111
impl IsTerminal for crate :: Buffer {
136
112
#[ inline]
@@ -139,14 +115,6 @@ impl IsTerminal for crate::Buffer {
139
115
}
140
116
}
141
117
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
-
150
118
/// Lock a stream
151
119
pub trait AsLockedWrite : private:: Sealed {
152
120
/// Locked writer type
@@ -194,7 +162,7 @@ impl AsLockedWrite for std::io::StderrLock<'static> {
194
162
}
195
163
}
196
164
197
- impl AsLockedWrite for Box < dyn std:: io:: Write > {
165
+ impl AsLockedWrite for dyn std:: io:: Write {
198
166
type Write < ' w > = & ' w mut Self ;
199
167
200
168
#[ inline]
@@ -234,33 +202,24 @@ impl AsLockedWrite for crate::Buffer {
234
202
mod private {
235
203
pub trait Sealed { }
236
204
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
+
237
209
impl Sealed for std:: io:: Stdout { }
238
210
239
211
impl Sealed for std:: io:: StdoutLock < ' _ > { }
240
212
241
- impl Sealed for & ' _ mut std:: io:: StdoutLock < ' _ > { }
242
-
243
213
impl Sealed for std:: io:: Stderr { }
244
214
245
215
impl Sealed for std:: io:: StderrLock < ' _ > { }
246
216
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 { }
252
218
253
219
impl Sealed for Vec < u8 > { }
254
220
255
- impl Sealed for & ' _ mut Vec < u8 > { }
256
-
257
221
impl Sealed for std:: fs:: File { }
258
222
259
- impl Sealed for & ' _ mut std:: fs:: File { }
260
-
261
223
#[ allow( deprecated) ]
262
224
impl Sealed for crate :: Buffer { }
263
-
264
- #[ allow( deprecated) ]
265
- impl Sealed for & ' _ mut crate :: Buffer { }
266
225
}
0 commit comments