Skip to content

Commit ed1dbd7

Browse files
committed
feat: Implement AutoStream for dyn Write + auto traits
1 parent 8a57dcc commit ed1dbd7

File tree

2 files changed

+40
-0
lines changed

2 files changed

+40
-0
lines changed

crates/anstream/src/stream.rs

+18
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ impl RawStream for std::io::Stderr {}
2323
impl RawStream for std::io::StderrLock<'_> {}
2424

2525
impl RawStream for dyn std::io::Write {}
26+
impl RawStream for dyn std::io::Write + Send {}
27+
impl RawStream for dyn std::io::Write + Send + Sync {}
2628

2729
impl RawStream for Vec<u8> {}
2830

@@ -93,6 +95,20 @@ impl IsTerminal for dyn std::io::Write {
9395
}
9496
}
9597

98+
impl IsTerminal for dyn std::io::Write + Send {
99+
#[inline]
100+
fn is_terminal(&self) -> bool {
101+
false
102+
}
103+
}
104+
105+
impl IsTerminal for dyn std::io::Write + Send + Sync {
106+
#[inline]
107+
fn is_terminal(&self) -> bool {
108+
false
109+
}
110+
}
111+
96112
impl IsTerminal for Vec<u8> {
97113
#[inline]
98114
fn is_terminal(&self) -> bool {
@@ -215,6 +231,8 @@ mod private {
215231
impl Sealed for std::io::StderrLock<'_> {}
216232

217233
impl Sealed for dyn std::io::Write {}
234+
impl Sealed for dyn std::io::Write + Send {}
235+
impl Sealed for dyn std::io::Write + Send + Sync {}
218236

219237
impl Sealed for Vec<u8> {}
220238

crates/anstyle-wincon/src/stream.rs

+22
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,28 @@ impl WinconStream for dyn std::io::Write {
4242
}
4343
}
4444

45+
impl WinconStream for dyn std::io::Write + Send {
46+
fn write_colored(
47+
&mut self,
48+
fg: Option<anstyle::AnsiColor>,
49+
bg: Option<anstyle::AnsiColor>,
50+
data: &[u8],
51+
) -> std::io::Result<usize> {
52+
crate::ansi::write_colored(self, fg, bg, data)
53+
}
54+
}
55+
56+
impl WinconStream for dyn std::io::Write + Send + Sync {
57+
fn write_colored(
58+
&mut self,
59+
fg: Option<anstyle::AnsiColor>,
60+
bg: Option<anstyle::AnsiColor>,
61+
data: &[u8],
62+
) -> std::io::Result<usize> {
63+
crate::ansi::write_colored(self, fg, bg, data)
64+
}
65+
}
66+
4567
impl WinconStream for std::fs::File {
4668
fn write_colored(
4769
&mut self,

0 commit comments

Comments
 (0)