Ich möchte eine ausführbare Datei ausführen, die auf stdin blockiert, und wenn eine Taste gedrückt wird, wird das gleiche Zeichen sofort gedruckt, ohne Geben Sie ein, drücken Sie.Wie kann ich ein Zeichen von stdin lesen, ohne Enter drücken zu müssen?
Wie kann ich ein Zeichen von der Standardeingabe lesen, ohne einzugeben? Geben Sie ein? Ich begann mit diesem Beispiel:
fn main() {
println!("Type something!");
let mut line = String::new();
let input = std::io::stdin().read_line(&mut line).expect("Failed to read line");
println!("{}", input);
}
ich über die API sah und versuchte read_line()
mit bytes()
ersetzen, aber alles, was ich versuche, erfordert mich drücken Sie die Eingabetaste, bevor Lese auftritt.
Diese Frage wurde für C/C++ gefragt, aber es scheint keine Standardmethode zu sein, es zu tun: Capture characters from standard input without waiting for enter to be pressed
Es ist nicht in Rust machbar sein könnte, es ist nicht einfach in C/C++ unter Berücksichtigung.
Dies ist ein Plattformproblem, kein Sprachproblem. Unter Windows gibt es Zeicheneingabefunktionen, aber unter Unix/Linux müssen Sie den Terminal außerhalb der Zeile gepufferten Modus nehmen. –
Sie können die 'Getch'-Funktion von der erwähnten SO-Verknüpfung verwenden. Sie müssen das nur in ein gemeinsames Objekt kompilieren und von Rust aus verwenden: https://gist.github.com/ihrwein/a4558d63d9250ee0bbf6 Sie benötigen einen C-Compiler und es funktioniert nur unter Linux (zumindest habe ich es dort getestet) . –