Wie kann ich Lesen Sie ein Zeichen aus stdin, ohne die enter-Taste drücken?

Möchte ich laufen eine ausführbare Datei, die Blöcke auf stdin und wenn eine Taste gedrückt wird, dass gleiche Zeichen wird sofort gedruckt, ohne Enter gedrückt werden.

Wie kann ich Lesen Sie ein Zeichen aus stdin zimmerreserviereung, ohne das Sie drücken Sie Enter? Angefangen habe ich 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 sah durch die API und versucht, anstelle read_line() mit bytes(), aber alles, was ich versuchen muss ich drücken Sie Enter vor dem Lesen Auftritt.

Diese Frage wurde für C/C++, aber es scheint keinen standard-Weg, es zu tun: Erfassen Zeichen von standard-input, ohne zu warten, für Sie die EINGABETASTE gedrückt werden

Könnte es nicht machbar sein in Rust, da es nicht einfach ist in C/C++.

Dies ist ein Plattform-Problem, nicht eine Sprache. Auf windows gibt es Zeichen-Eingabe-Funktionen, aber auf unix - /linux-nehmen Sie das terminal aus der Linie buffered-Modus.
Sie können die getch Funktion aus dem oben genannten link. Sie müssen nur zu kompilieren, die in einem gemeinsamen Objekt, und verwenden Sie es vom Rost: gist.github.com/ihrwein/a4558d63d9250ee0bbf6 Sie benötigen einen C-compiler und es funktioniert nur auf Linux (zumindest habe ich es getestet).

InformationsquelleAutor bantl23 | 2014-10-12

Schreibe einen Kommentar