crow/io/stdin.crow (source)

read-stdin string() summon

Reads from stdin.
If that comes from the user typing at the terminal, this will block until they hit enter.
Result will not have leading or trailing whitespace.

read-stdin-until-parse[t] t(error-message string, parse mut t?(string)) summon, t shared

Keep reading from stdin until parse returns a non-empty option.
Print error-message after every failure.