read_buf_exact: on error, all read bytes are appended to the buffer#109022
read_buf_exact: on error, all read bytes are appended to the buffer#109022bors merged 1 commit intorust-lang:masterfrom
Conversation
Guarantee that when `read_buf_exact` returns, all bytes read will be appended to the buffer. Including the case when the operations fails. The motivating use case are operations on a non-blocking reader. When `read_buf_exact` fails with `ErrorKind::WouldBlock` error, the operation can be resumed at a later time.
|
(rustbot has picked a reviewer for you, use r? to override) |
|
Hey! It looks like you've submitted a new PR for the library teams! If this PR contains changes to any Examples of
|
|
r? dtolnay for T-libs-api FCP |
dtolnay
left a comment
There was a problem hiding this comment.
Looks good. Hopefully my understanding is correct: the reason this is different than read_exact (which makes ∅ guarantee about what's put in buf in the error case) is that read_exact has no way to convey to the caller the number of bytes that got written in the error case, whereas in read_buf_exact the BorrowedCursor keeps track of that and can let the caller soundly access the written part after an error if they want.
|
@bors r+ rollup |
|
(The method is unstable; no T-libs-api FCP until later.) |
Rollup of 10 pull requests Successful merges: - rust-lang#104100 (Allow using `Range` as an `Iterator` in const contexts. ) - rust-lang#105793 (Add note for mismatched types because of circular dependencies) - rust-lang#108798 (move default backtrace setting to sys) - rust-lang#108829 (Use Edition 2021 :pat in matches macro) - rust-lang#108973 (Beautify pin! docs) - rust-lang#109003 (Add `useless_anonymous_reexport` lint) - rust-lang#109022 (read_buf_exact: on error, all read bytes are appended to the buffer) - rust-lang#109212 (fix: don't suggest similar method when unstable) - rust-lang#109243 (The name of NativeLib will be presented) - rust-lang#109324 (Implement FixedSizeEncoding for UnusedGenericParams.) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
Guarantee that when
read_buf_exactreturns, all bytes read will beappended to the buffer. Including the case when the operations fails.
The motivating use case are operations on a non-blocking reader. When
read_buf_exactfails withErrorKind::WouldBlockerror, the operationcan be resumed at a later time.