I am writing a terminal application that uses a basic REPL, and now want to replace stdin().lines().next()
by a readline library.
However, I am struggling to find something that fulfills my requirements.
I am also open to utilize a combination e.g. with tokio
.
Apart from standard readline features (history, editing the current line) with maybe a bonus of custom completion and highlighting like in reedline
, this is primarily what I am looking for:
"Support for a concurrent output stream from background tasks to be displayed, while the input prompt is active. (“Full duplex” mode)"
As described in reedline - Rust and implemented in the many-year old rustyline fork GitHub - xeruf/rustylinez: Readline Implementation in Rust with support of concurrent printing to stdout
I have threads running in the background that sometimes send messages via colog
which should just nicely seep through the prompt rather than awkwardly interfering.
Timeout when reading for an input line
As implemented in the unmaintained linefeed
library: https://docs.rs/linefeed/0.5.4/linefeed/reader/struct.Reader.html#method.read_line_step