La macro println!
in Rust laisse toujours un caractère de nouvelle ligne à la fin de chaque sortie. Par exemple
println!("Enter the number : ");
io::stdin().read_line(&mut num);
donne la sortie
Enter the number :
56
Je ne veux pas la saisie de l'utilisateur 56
pour être sur une nouvelle ligne. Comment puis-je faire cela?
Vous pouvez utiliser la macro print!
à la place.
print!("Enter the number : ");
io::stdin().read_line(&mut num);
Il faut se méfier:
Notez que stdout est fréquemment mis en mémoire tampon par défaut, il peut donc être nécessaire d'utiliser
io::stdout().flush()
pour garantir que la sortie est émise immédiatement.
C'est plus compliqué qu'il n'y paraît à première vue. D'autres réponses mentionnent la macro print!
Mais ce n'est pas aussi simple que cela. Vous devrez probablement vider stdout, car il peut ne pas être écrit sur l'écran immédiatement. flush()
est un trait qui fait partie de std::io::Write
et qui doit donc être en mesure de fonctionner (c'est une erreur précoce assez facile).
use std::io;
use std::io::Write; // <--- bring flush() into scope
fn main() {
println!("I'm picking a number between 1 and 100...");
print!("Enter a number: ");
io::stdout().flush().unwrap();
let mut val = String::new();
io::stdin().read_line(&mut val)
.expect("Error getting guess");
println!("You entered {}", val);
}