snippetrustCritical
How can I read a single line from stdin in Rust?
Viewed 0 times
stdinhowfromlinesinglerustcanread
Problem
I'm asking for the equivalent of
I've read How to read user input in Rust?, but it asks how to read multiple lines; I want only one line.
I also read How do I read a single String from standard input?, but I'm not sure if it behaves like
fgets() in C.let line = ...;
println!("You entered: {}", line);I've read How to read user input in Rust?, but it asks how to read multiple lines; I want only one line.
I also read How do I read a single String from standard input?, but I'm not sure if it behaves like
fgets() or sscanf("%s",...).Solution
In How to read user input in Rust? you can see how to iterate over all lines:
You can also manually iterate without a for-loop:
You cannot write a one-liner to do what you want. But the following reads a single line (and is exactly the same answer as in How do I read a single String from standard input?):
You can also use the
use std::io::{self, BufRead};
fn main() {
let stdin = io::stdin();
for line in stdin.lock().lines() {
println!("{}", line.unwrap());
}
}You can also manually iterate without a for-loop:
use std::io::{self, BufRead};
fn main() {
let stdin = io::stdin();
let mut iterator = stdin.lock().lines();
let line1 = iterator.next().unwrap().unwrap();
let line2 = iterator.next().unwrap().unwrap();
}You cannot write a one-liner to do what you want. But the following reads a single line (and is exactly the same answer as in How do I read a single String from standard input?):
use std::io::{self, BufRead};
fn main() {
let stdin = io::stdin();
let line1 = stdin.lock().lines().next().unwrap().unwrap();
}You can also use the
text_io crate for super simple input:#[macro_use] extern crate text_io;
fn main() {
// reads until a \n is encountered
let line: String = read!("{}\n");
}Code Snippets
use std::io::{self, BufRead};
fn main() {
let stdin = io::stdin();
for line in stdin.lock().lines() {
println!("{}", line.unwrap());
}
}use std::io::{self, BufRead};
fn main() {
let stdin = io::stdin();
let mut iterator = stdin.lock().lines();
let line1 = iterator.next().unwrap().unwrap();
let line2 = iterator.next().unwrap().unwrap();
}use std::io::{self, BufRead};
fn main() {
let stdin = io::stdin();
let line1 = stdin.lock().lines().next().unwrap().unwrap();
}#[macro_use] extern crate text_io;
fn main() {
// reads until a \n is encountered
let line: String = read!("{}\n");
}Context
Stack Overflow Q#30186037, score: 106
Revisions (0)
No revisions yet.