io::Seek: Provide rewind()
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
This commit is contained in:
parent
74e0e45f3c
commit
c3ca148ac0
@ -1669,6 +1669,41 @@ pub trait Seek {
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
fn seek(&mut self, pos: SeekFrom) -> Result<u64>;
|
||||
|
||||
/// Rewind to the beginning of a stream.
|
||||
///
|
||||
/// This is a convenience method, equivalent to `seek(SeekFrom::Start(0)`.
|
||||
///
|
||||
/// # Errors
|
||||
///
|
||||
/// Rewinding can fail, for example becaue it might involve flushing a buffer.
|
||||
///
|
||||
/// # Example
|
||||
///
|
||||
/// ```no_run
|
||||
/// #![feature(seek_rewind)]
|
||||
/// use std::io::{Read, Seek, Write};
|
||||
/// use std::fs::OpenOptions;
|
||||
///
|
||||
/// let mut f = OpenOptions::new()
|
||||
/// .write(true)
|
||||
/// .read(true)
|
||||
/// .create(true)
|
||||
/// .open("foo.txt").unwrap();
|
||||
///
|
||||
/// let hello = "Hello!\n";
|
||||
/// write!(f, "{}", hello).unwrap();
|
||||
/// f.rewind().unwrap();
|
||||
///
|
||||
/// let mut buf = String::new();
|
||||
/// f.read_to_string(&mut buf).unwrap();
|
||||
/// assert_eq!(&buf, hello);
|
||||
/// ```
|
||||
#[unstable(feature = "seek_rewind", issue = "none")]
|
||||
fn rewind(&mut self) -> Result<()> {
|
||||
self.seek(SeekFrom::Start(0))?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
/// Returns the length of this stream (in bytes).
|
||||
///
|
||||
/// This method is implemented using up to three seek operations. If this
|
||||
|
Loading…
Reference in New Issue
Block a user