@@ -25,6 +25,7 @@ impl<T: io::Read + std::fmt::Debug + AsRawFd + Send> TermRead for T {}
25
25
pub struct ReadWritePair {
26
26
read : Arc < Mutex < dyn TermRead > > ,
27
27
write : Arc < Mutex < dyn TermWrite > > ,
28
+ style : Style ,
28
29
}
29
30
30
31
/// Where the term is writing.
@@ -176,9 +177,19 @@ impl Term {
176
177
} )
177
178
}
178
179
179
- /// Return a terminal for the given Read/Write pair.
180
+ /// Return a terminal for the given Read/Write pair styled-like Stderr .
180
181
#[ cfg( unix) ]
181
182
pub fn read_write_pair < R , W > ( read : R , write : W ) -> Term
183
+ where
184
+ R : io:: Read + std:: fmt:: Debug + AsRawFd + Send + ' static ,
185
+ W : Write + std:: fmt:: Debug + AsRawFd + Send + ' static ,
186
+ {
187
+ Self :: read_write_pair_with_style ( read, write, Style :: new ( ) . for_stderr ( ) )
188
+ }
189
+
190
+ /// Return a terminal for the given Read/Write pair.
191
+ #[ cfg( unix) ]
192
+ pub fn read_write_pair_with_style < R , W > ( read : R , write : W , style : Style ) -> Term
182
193
where
183
194
R : io:: Read + std:: fmt:: Debug + AsRawFd + Send + ' static ,
184
195
W : Write + std:: fmt:: Debug + AsRawFd + Send + ' static ,
@@ -187,6 +198,7 @@ impl Term {
187
198
target : TermTarget :: ReadWritePair ( ReadWritePair {
188
199
read : Arc :: new ( Mutex :: new ( read) ) ,
189
200
write : Arc :: new ( Mutex :: new ( write) ) ,
201
+ style,
190
202
} ) ,
191
203
buffer : None ,
192
204
} )
@@ -198,9 +210,8 @@ impl Term {
198
210
match self . inner . target {
199
211
TermTarget :: Stderr => Style :: new ( ) . for_stderr ( ) ,
200
212
TermTarget :: Stdout => Style :: new ( ) . for_stdout ( ) ,
201
- // TODO: Needs an implementation. But also: is not Copy.
202
213
#[ cfg( unix) ]
203
- TermTarget :: ReadWritePair ( _ ) => Style :: new ( ) . for_stderr ( ) ,
214
+ TermTarget :: ReadWritePair ( ReadWritePair { ref style , .. } ) => style . clone ( ) ,
204
215
}
205
216
}
206
217
0 commit comments