此问题已在此处有答案:
Why does this read input before printing?(3个答案)
20天前关闭。
好吧,所以我没有与Rust合作那么久,所以如果这是愚蠢的,我很抱歉。但我想做一个print函数,它接收一个字符串,然后在同一行上逐个字符地打印字符串,每个字符之间有一个停顿。函数如下:
fn talk(input: String){
let inputVec: Vec<char> = input.chars().collect();
let mut i = 0;
loop{
thread::sleep(time::Duration::from_millis(100));
if i >= inputVec.len() {
break;
}
print!("{}", inputVec[i]);
i = i + 1;
}
}
当我用这个打印代码的时候!宏,它不工作,只是等待100毫秒,然后打印字符串作为一个打印!调用。但是如果我使用println!那么它就完美地工作了,减去每个字符的新行。有人能帮我吗?或者至少告诉我为什么它不工作?
1条答案
按热度按时间f0brbegy1#
就像Vivick和drewlett的注解一样,你需要使用Write io的模块Trait的flush。
这对我很有效!
但是,最简单的方法是使用
eprint!
宏,如下所示:documentation说:
eprint!
仅用于错误和进度消息。使用print!
作为程序的主输出。