Ответ 1
При чтении из std:: io:: stdin() вход буферизуется до тех пор, пока не встретится EOF
Почему ты так говоришь? Ваш код работает так, как вам хочется. Если я скомпилирую его и запустил:
$ ./i
hello
hello
goodbye
goodbye
yeah!
yeah!
Первая из каждой пары строк - это ввод в терминал и попадание в нее (это то, что ищет read_line
). Вторая - это то, что выводит ваша программа.
Err(_) => timer::sleep(interval)
Это плохая идея - когда вход закрыт (например, с помощью ^D
), ваша программа не заканчивается.
Edit
Я создал script bar
:
#!/bin/bash
set -eu
i=0
while true; do
echo $i
sleep 1
done
И затем запустил его:
./bar | ./i
0
0
0
Ваша программа продолжает работать.