Определено ли поведение программы при переполнении stdin в Rust?

Нигде не нашел информацию о поведении прораммы в случае использования stdin().read_line().
Смутил абзац в документации:

This function is blocking and should be used carefully: it is possible for an attacker to continuously send bytes without ever sending a newline or EOF.

Можно ли как-то предотвратить такой бесконечный ввод данных?
Как это может сказаться на программе?
Определено ли ее поведение в таком случае?
можно ли прервать этот процесс?
Можно ли вывести сообщение об ошибке и продолжить выполнение программы?

Возможно я не до конца понимаю взаимодействие программы с stdin, терминалом и ОС.
Зависит ли поведение программы от этих факторов?

Заранее спасибо!


Ответы (1 шт):

Автор решения: user7860670

Смысл этого предупреждения не в переполнении stdin, а в том, что завершение чтения данных управляется действиями пишущей стороны. Этого завершения может и не произойти. Собственно многие программы командной строки, тот же powershell большую часть времени просто ожидают ввод. Соответственно, если это может создать сложности, то следует использовать не чтение строки, а чтение с ограничением на количество байт std::io::Read::take и / или неблокирующее чтение из стандартного ввода (хотя это опять же будет управляться действиями пишущей стороны).

→ Ссылка