diff --git a/src/libstd/io/mod.rs b/src/libstd/io/mod.rs index 2eadf9a7f4fc6..0fd07fad5849f 100644 --- a/src/libstd/io/mod.rs +++ b/src/libstd/io/mod.rs @@ -26,11 +26,9 @@ Some examples of obvious things you might want to do * Read lines from stdin ```rust - use std::io::BufferedReader; - use std::io::stdin; + use std::io; - let mut stdin = BufferedReader::new(stdin()); - for line in stdin.lines() { + for line in io::stdin().lines() { print!("{}", line); } ``` @@ -1097,10 +1095,9 @@ pub trait Buffer: Reader { /// # Example /// /// ```rust - /// use std::io::{BufferedReader, stdin}; - /// - /// let mut reader = BufferedReader::new(stdin()); + /// use std::io; /// + /// let mut reader = io::stdin(); /// let input = reader.read_line().ok().unwrap_or(~"nothing"); /// ``` /// diff --git a/src/libstd/io/stdio.rs b/src/libstd/io/stdio.rs index 2cc0c67ff6aba..e1f0d87e130b6 100644 --- a/src/libstd/io/stdio.rs +++ b/src/libstd/io/stdio.rs @@ -30,7 +30,7 @@ out.write(bytes!("Hello, world!")); use container::Container; use fmt; use io::{Reader, Writer, IoResult, IoError, OtherIoError, - standard_error, EndOfFile, LineBufferedWriter}; + standard_error, EndOfFile, LineBufferedWriter, BufferedReader}; use libc; use mem::replace; use option::{Option, Some, None}; @@ -86,8 +86,21 @@ fn src(fd: libc::c_int, readable: bool, f: |StdSource| -> T) -> T { /// Creates a new non-blocking handle to the stdin of the current process. /// -/// See `stdout()` for notes about this function. -pub fn stdin() -> StdReader { +/// The returned handled is buffered by default with a `BufferedReader`. If +/// buffered access is not desired, the `stdin_raw` function is provided to +/// provided unbuffered access to stdin. +/// +/// See `stdout()` for more notes about this function. +pub fn stdin() -> BufferedReader { + BufferedReader::new(stdin_raw()) +} + +/// Creates a new non-blocking handle to the stdin of the current process. +/// +/// Unlike `stdin()`, the returned reader is *not* a buffered reader. +/// +/// See `stdout()` for more notes about this function. +pub fn stdin_raw() -> StdReader { src(libc::STDIN_FILENO, true, |src| StdReader { inner: src }) } diff --git a/src/test/bench/sudoku.rs b/src/test/bench/sudoku.rs index a4041ae181644..56390b70ab3bc 100644 --- a/src/test/bench/sudoku.rs +++ b/src/test/bench/sudoku.rs @@ -278,7 +278,7 @@ fn main() { let mut sudoku = if use_default { Sudoku::from_vec(&DEFAULT_SUDOKU) } else { - Sudoku::read(BufferedReader::new(io::stdin())) + Sudoku::read(io::stdin()) }; sudoku.solve(); sudoku.write(&mut io::stdout());