Sto riscontrando alcuni problemi con alcune operazioni di I/O di base. In particolare, il testo "Inserisci il tuo nome" è scritto all'uscita dopo digito il mio nome e ha colpito Enter:Perché viene letto l'input prima della stampa?
use std::io;
fn main() {
print!("Please enter your name: ");
let mut name = String::new();
match io::stdin().read_line(&mut name) {
Ok(_) => println!(""),
Err(err) => println!("Could not parse input: {}", err)
}
println!("Hello, {}!", name.trim());
}
ha pronunciato la seguente uscita:
Compiling chat v0.1.0 (file:///home/marcus/dev/rust/chat)
Running `target/debug/chat`
marcus
Please enter your name:
Hello, marcus!
Qualora il il primo "marcus" è stato inserito da me. Perché il programma non stamperà "Prego inserire il tuo nome" prima di attendere l'input?
E 'possibile "non fare nulla" se un restituito Result
è Ok
? Nell'esempio, Ok()
significa che ho salvato l'input nel nome della variabile. È fantastico. Ma cosa faccio con Ok() =>
in questo caso?
Dovresti probabilmente menzionare 'if let Err (err) = io :: stdin(). Read_line (& mut name) {println! (" Impossibile analizzare l'input: {} ", err); } '. – Veedrac