Skip to content

Commit 16da5d4

Browse files
committed
Add BufReader::buffer
This subsumes the need for an explicit is_empty function, and provides access to the buffered data itself which has been requested from time to time.
1 parent 8aa27ee commit 16da5d4

File tree

1 file changed

+29
-1
lines changed

1 file changed

+29
-1
lines changed

src/libstd/io/buffered.rs

+29-1
Original file line numberDiff line numberDiff line change
@@ -168,8 +168,36 @@ impl<R: Read> BufReader<R> {
168168
/// # }
169169
/// ```
170170
#[unstable(feature = "bufreader_is_empty", issue = "45323", reason = "recently added")]
171+
#[rustc_deprecated(since = "1.26.0", reason = "use .buffer().is_empty() instead")]
171172
pub fn is_empty(&self) -> bool {
172-
self.pos == self.cap
173+
self.buffer().is_empty()
174+
}
175+
176+
/// Returns a reference to the internally buffered data.
177+
///
178+
/// Unlike `fill_buf`, this will not attempt to fill the buffer if it is empty.
179+
///
180+
/// # Examples
181+
///
182+
/// ```
183+
/// # #![feature(bufreader_buffer)]
184+
/// use std::io::{BufReader, BufRead};
185+
/// use std::fs::File;
186+
///
187+
/// # fn foo() -> std::io::Result<()> {
188+
/// let f = File::open("log.txt")?;
189+
/// let mut reader = BufReader::new(f);
190+
/// assert!(reader.buffer().is_empty());
191+
///
192+
/// if reader.fill_buf()?.len() > 0 {
193+
/// assert!(!reader.buffer().is_empty());
194+
/// }
195+
/// # Ok(())
196+
/// # }
197+
/// ```
198+
#[unstable(feature = "bufreader_buffer", issue = "45323")]
199+
pub fn buffer(&self) -> &[u8] {
200+
&self.buf[self.pos..self.cap]
173201
}
174202

175203
/// Unwraps this `BufReader`, returning the underlying reader.

0 commit comments

Comments
 (0)