Rust input/output: Difference between revisions
From wikinotes
Line 22: | Line 22: | ||
let stdin = io::stdin(); | let stdin = io::stdin(); | ||
let handle = stdin.lock(); | let handle = stdin.lock(); | ||
let | let lines: Vec<String> = handle | ||
.lines() | .lines() | ||
.map(|res| res.unwrap_or_default()) | .map(|res| res.unwrap_or_default()) | ||
.collect(); | .collect(); | ||
print!("START\n{}\nFINISH\n", | print!("START\n{}\nFINISH\n", lines.join("\n")); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Revision as of 06:44, 9 February 2023
Documentation
std::fs
https://doc.rust-lang.org/std/fs/index.html
Stdin, Stdout, Stderr
println!("out"); // write to stdout eprintln!("err"); // write to stderrread from stdin (wait indefinitely if nothing is written)
use std::io; use std::io::BufRead; let stdin = io::stdin(); let handle = stdin.lock(); let lines: Vec<String> = handle .lines() .map(|res| res.unwrap_or_default()) .collect(); print!("START\n{}\nFINISH\n", lines.join("\n"));TODO:
read from stdin, checking if it's a tty or a pipe
User Input
let name = String::new(); io::stdin().read_line(&mut name);