1
Fork 0

Rollup merge of #122276 - RalfJung:io-read, r=Nilstrieb

io::Read trait: make it more clear when we are adressing implementations vs callers

Inspired by [this](https://github.com/rust-lang/rust/issues/72186#issuecomment-1987076295) comment.

For some reason we only have that `buf` warning in `read` and `read_exact`, even though it affects a bunch of other functions of this trait as well. It doesn't seem worth copy-pasting the same text everywhere though so I did not change this.
This commit is contained in:
Matthias Krüger 2024-03-10 22:16:42 +01:00 committed by GitHub
commit 0c73b2db41
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -692,10 +692,9 @@ pub trait Read {
/// Callers have to ensure that no unchecked out-of-bounds accesses are possible even if /// Callers have to ensure that no unchecked out-of-bounds accesses are possible even if
/// `n > buf.len()`. /// `n > buf.len()`.
/// ///
/// No guarantees are provided about the contents of `buf` when this /// *Implementations* of this method can make no assumptions about the contents of `buf` when
/// function is called, so implementations cannot rely on any property of the /// this function is called. It is recommended that implementations only write data to `buf`
/// contents of `buf` being true. It is recommended that *implementations* /// instead of reading its contents.
/// only write data to `buf` instead of reading its contents.
/// ///
/// Correspondingly, however, *callers* of this method in unsafe code must not assume /// Correspondingly, however, *callers* of this method in unsafe code must not assume
/// any guarantees about how the implementation uses `buf`. The trait is safe to implement, /// any guarantees about how the implementation uses `buf`. The trait is safe to implement,
@ -901,12 +900,10 @@ pub trait Read {
/// This function reads as many bytes as necessary to completely fill the /// This function reads as many bytes as necessary to completely fill the
/// specified buffer `buf`. /// specified buffer `buf`.
/// ///
/// No guarantees are provided about the contents of `buf` when this /// *Implementations* of this method can make no assumptions about the contents of `buf` when
/// function is called, so implementations cannot rely on any property of the /// this function is called. It is recommended that implementations only write data to `buf`
/// contents of `buf` being true. It is recommended that implementations /// instead of reading its contents. The documentation on [`read`] has a more detailed
/// only write data to `buf` instead of reading its contents. The /// explanation of this subject.
/// documentation on [`read`] has a more detailed explanation on this
/// subject.
/// ///
/// # Errors /// # Errors
/// ///