@@ -1669,6 +1669,41 @@ pub trait Seek {
1669
1669
#[ stable( feature = "rust1" , since = "1.0.0" ) ]
1670
1670
fn seek ( & mut self , pos : SeekFrom ) -> Result < u64 > ;
1671
1671
1672
+ /// Rewind to the beginning of a stream.
1673
+ ///
1674
+ /// This is a convenience method, equivalent to `seek(SeekFrom::Start(0)`.
1675
+ ///
1676
+ /// # Errors
1677
+ ///
1678
+ /// Rewinding can fail, for example becaue it might involve flushing a buffer.
1679
+ ///
1680
+ /// # Example
1681
+ ///
1682
+ /// ```no_run
1683
+ /// #![feature(seek_rewind)]
1684
+ /// use std::io::{Read, Seek, Write};
1685
+ /// use std::fs::OpenOptions;
1686
+ ///
1687
+ /// let mut f = OpenOptions::new()
1688
+ /// .write(true)
1689
+ /// .read(true)
1690
+ /// .create(true)
1691
+ /// .open("foo.txt").unwrap();
1692
+ ///
1693
+ /// let hello = "Hello!\n";
1694
+ /// write!(f, "{}", hello).unwrap();
1695
+ /// f.rewind().unwrap();
1696
+ ///
1697
+ /// let mut buf = String::new();
1698
+ /// f.read_to_string(&mut buf).unwrap();
1699
+ /// assert_eq!(&buf, hello);
1700
+ /// ```
1701
+ #[ unstable( feature = "seek_rewind" , issue = "none" ) ]
1702
+ fn rewind ( & mut self ) -> Result < ( ) > {
1703
+ self . seek ( SeekFrom :: Start ( 0 ) ) ?;
1704
+ Ok ( ( ) )
1705
+ }
1706
+
1672
1707
/// Returns the length of this stream (in bytes).
1673
1708
///
1674
1709
/// This method is implemented using up to three seek operations. If this
0 commit comments