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 to
BufReadmethods (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 of
Stdin` 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