In doc examples, don't ignore read/write results

Calling `Read::read` or `Write::write` without checking the returned
`usize` value is almost always an error.  Example code in the
documentation should demonstrate how to use the return value correctly.
Otherwise, people might copy the example code thinking that it is okay
to "fire and forget" these methods.
This commit is contained in:
Matt Brubeck 2019-03-29 09:30:08 -07:00
parent 2002b4b39a
commit b6fb3e3411

View file

@ -24,9 +24,9 @@
//! let mut buffer = [0; 10];
//!
//! // read up to 10 bytes
//! f.read(&mut buffer)?;
//! let n = f.read(&mut buffer)?;
//!
//! println!("The bytes: {:?}", buffer);
//! println!("The bytes: {:?}", &buffer[..n]);
//! Ok(())
//! }
//! ```
@ -56,9 +56,9 @@
//! f.seek(SeekFrom::End(-10))?;
//!
//! // read up to 10 bytes
//! f.read(&mut buffer)?;
//! let n = f.read(&mut buffer)?;
//!
//! println!("The bytes: {:?}", buffer);
//! println!("The bytes: {:?}", &buffer[..n]);
//! Ok(())
//! }
//! ```
@ -537,7 +537,9 @@ pub trait Read {
/// let mut buffer = [0; 10];
///
/// // read up to 10 bytes
/// f.read(&mut buffer[..])?;
/// let n = f.read(&mut buffer[..])?;
///
/// println!("The bytes: {:?}", &buffer[..n]);
/// Ok(())
/// }
/// ```
@ -1062,12 +1064,23 @@ impl Initializer {
/// use std::fs::File;
///
/// fn main() -> std::io::Result<()> {
/// let data = b"some bytes";
///
/// let mut pos = 0;
/// let mut buffer = File::create("foo.txt")?;
///
/// buffer.write(b"some bytes")?;
/// while pos < data.len() {
/// let bytes_written = buffer.write(&data[pos..])?;
/// pos += bytes_written;
/// }
/// Ok(())
/// }
/// ```
///
/// The trait also provides convenience methods like [`write_all`], which calls
/// `write` in a loop until its entire input has been written.
///
/// [`write_all`]: #method.write_all
#[stable(feature = "rust1", since = "1.0.0")]
#[doc(spotlight)]
pub trait Write {