]> git.lizzy.rs Git - rust.git/commit
auto merge of #13127 : kballard/rust/read_at_least, r=alexcrichton
authorbors <bors@rust-lang.org>
Wed, 14 May 2014 03:01:28 +0000 (20:01 -0700)
committerbors <bors@rust-lang.org>
Wed, 14 May 2014 03:01:28 +0000 (20:01 -0700)
commite4414739a5897ff2a4b35de5f7e1436b6e3f3f10
tree03adfb84a80249982d5dee710f7cf7f0de988631
parentb2b383cab5959b1ec331e1d77583fa944b7fd593
parent972f2e585528515eaab4bee7270acda7f7375398
auto merge of #13127 : kballard/rust/read_at_least, r=alexcrichton

Reader.read_at_least() ensures that at least a given number of bytes
have been read. The most common use-case for this is ensuring at least 1
byte has been read. If the reader returns 0 enough times in a row, a new
error kind NoProgress will be returned instead of looping infinitely.

This change is necessary in order to properly support Readers that
repeatedly return 0, either because they're broken, or because they're
attempting to do a non-blocking read on some resource that never becomes
available.

Also add .push() and .push_at_least() methods. push() is like read() but
the results are appended to the passed Vec.

Remove Reader.fill() and Reader.push_exact() as they end up being thin
wrappers around read_at_least() and push_at_least().

[breaking-change]