Struct std::io::Stdin [] [src]

pub struct Stdin {
    // some fields omitted
}

A handle to the standard input stream of a process.

Each handle is a shared reference to a global buffer of input data to this process. A handle can be lock`lock'd to gain full access toBufReadmethods (e.g..lines()`). Writes to this handle are otherwise locked with respect to other writes.

This handle implements the Read`Readtrait, but beware that concurrent reads ofStdin` must be executed with care.

Created by the function io::stdin().

Methods

impl Stdin

fn lock(&self) -> StdinLock

Locks this handle to the standard input stream, returning a readable guard.

The lock is released when the returned lock goes out of scope. The returned guard also implements the Read`Readand` and BufRead`BufRead` traits for accessing the underlying data.

fn read_line(&self, buf: &mut String) -> Result<usize>

Locks this handle and reads a line of input into the specified buffer.

For detailed semantics of this method, see the documentation on BufRead::read_line.

Examples

fn main() { use std::io; let mut input = String::new(); match io::stdin().read_line(&mut input) { Ok(n) => { println!("{} bytes read", n); println!("{}", input); } Err(error) => println!("error: {}", error), } }
use std::io;

let mut input = String::new();
match io::stdin().read_line(&mut input) {
    Ok(n) => {
        println!("{} bytes read", n);
        println!("{}", input);
    }
    Err(error) => println!("error: {}", error),
}

You can run the example one of two ways:

  • Pipe some text to it, e.g. printf foo | path/to/executable
  • Give it text interactively by running the executable directly, continuing

Trait Implementations

impl Read for Stdin

fn read(&mut self, buf: &mut [u8]) -> Result<usize>

fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize>

fn read_to_string(&mut self, buf: &mut String) -> Result<usize>

fn by_ref(&mut self) -> &mut Self where Self: Sized

fn bytes(self) -> Bytes<Self> where Self: Sized

fn chars(self) -> Chars<Self> where Self: Sized

fn chain<R: Read>(self, next: R) -> Chain<Self, R> where Self: Sized

fn take(self, limit: u64) -> Take<Self> where Self: Sized

fn tee<W: Write>(self, out: W) -> Tee<Self, W> where Self: Sized