cursive 0.16.3

A TUI (Text User Interface) library focused on ease-of-use.
Documentation
# Cursive [Cursive] is a [TUI] library - it lets you easily build rich interfaces for use in a terminal. [Cursive]: https://github.com/gyscos/cursive [TUI]: https://en.wikipedia.org/wiki/Text-based_user_interface ## Getting started * Every application should start with a [`Cursive`] object. It is the main entry-point to the library. * A declarative phase then describes the structure of the UI by adding views and configuring their behaviours. * Finally, the event loop is started by calling [`Cursive::run`]. ## Examples ```rust,no_run use cursive::{Cursive, CursiveExt}; use cursive::views::TextView; let mut siv = Cursive::new(); siv.add_layer(TextView::new("Hello World!\nPress q to quit.")); siv.add_global_callback('q', |s| s.quit()); siv.run(); ``` ## Views Views are the main components of a cursive interface. The [`views`] module contains many views to use in your application; if you don't find what you need, you may also implement the [`View`] trait and build your own. ## Callbacks Cursive is callback-driven: it reacts to events generated by user input. During the declarative phase, callbacks are set to trigger on specific events. These functions usually take an `&mut Cursive` argument, allowing them to modify the view tree at will. ## Debugging The `Cursive` root initializes the terminal on creation, and does cleanups on drop. While it is alive, printing to the terminal will not work as expected, making debugging a bit harder. One solution is to redirect stderr to a file when running the application, and log to it instead of stdout. Or you can use gdb as usual. ## Themes Cursive supports configuring the feels and looks of your application with custom themes and colors. For details see documentation of the [`cursive::theme`] module. [`cursive::theme`]: ./theme/index.html