I made this code that works that when you press any key it exits the program. add "console = "0.16.1"" to your cargo.toml file then use this code.
use console::Term;
use std::io;
println!("Press any key to exit...");
let stdout: Term = Term::buffered_stdout();
loop {
let z: Result<char, io::Error> = stdout.read_char();
let wow: char = "".chars().next().unwrap_or_default();
if z.unwrap() != wow {
return;
}
}
this summarizing ai bot is saying the code is wrong when it works lol
What's the idea behind this convoluted construct? Why not simply '\0' or char::default()? And why does that if and loop exist at all? Does read_char ever return \0 in practice? Why not this?
use console::Term;
println!("Press any key to exit...");
let stdout: Term = Term::buffered_stdout();
let _: stdout.read_char().expect("could not read from stdout");
Any why are you reading from stdout not stdin? Does the console crate allow that? I'd expect an IO error when reading from stdout. But I guess if it's a terminal it still works?
2 Likes
I believe it's simply reading from a Term configured with buffered output on stdout rather than stderr; the docs there are a bit vague about input:
1 Like
nvm this works
println!("Press any key to exit...");
let stdout: Term = Term::buffered_stdout();
stdout.read_char().expect("");
The point of expect is to provide a readable message. If you don't provide a message, it's better to unwrap.