Skip to content

Commit 2ca0d60

Browse files
authored
Merge pull request #613 from casey/buffer-capacity
Forward directly to underlying sink if Buffer capacity is 0
2 parents 66a78a0 + 351bc26 commit 2ca0d60

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

src/sink/buffer.rs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,21 +75,33 @@ impl<S: Sink> Sink for Buffer<S> {
7575
type SinkError = S::SinkError;
7676

7777
fn start_send(&mut self, item: Self::SinkItem) -> StartSend<Self::SinkItem, Self::SinkError> {
78+
if self.cap == 0 {
79+
return self.sink.start_send(item);
80+
}
81+
7882
self.try_empty_buffer()?;
79-
if self.buf.len() > self.cap {
83+
if self.buf.len() == self.cap {
8084
return Ok(AsyncSink::NotReady(item));
8185
}
8286
self.buf.push_back(item);
8387
Ok(AsyncSink::Ready)
8488
}
8589

8690
fn poll_complete(&mut self) -> Poll<(), Self::SinkError> {
91+
if self.cap == 0 {
92+
return self.sink.poll_complete();
93+
}
94+
8795
try_ready!(self.try_empty_buffer());
8896
debug_assert!(self.buf.is_empty());
8997
self.sink.poll_complete()
9098
}
9199

92100
fn close(&mut self) -> Poll<(), Self::SinkError> {
101+
if self.cap == 0 {
102+
return self.sink.close();
103+
}
104+
93105
if self.buf.len() > 0 {
94106
try_ready!(self.try_empty_buffer());
95107
}

0 commit comments

Comments
 (0)