Hi everyone. I'm loving using Rust to build a text user interface (TUI) library that allows something like Redux, React, and flexbox capabilities, but in the context of a terminal.
Under the hood, I'm using the crossterm crate to interface w/ the terminal itself. On the journey to building this framework, I've been building lots of underlying components along the way, which are reusable and composable, and well tested. So I'm sharing it here in case others in the community find it useful.
r3bl_rs_utils crate on crates.io
This library provides utility functions:
- Thread safe asynchronous Redux library (uses Tokio to run subscribers and middleware in separate tasks). The reducer functions are run in sequence (not in Tokio tasks).
- Declarative macros, and procedural macros (both function like and derive) to avoid having to write lots of boilerplate code for many common (and complex) tasks. Things like Builder, unwrappers, common error types and result, etc.
- Non binary tree data structure inspired by memory arenas, that is thread safe and supports parallel tree walking.
- Capabilities to make it easier to build TUIs (Text User Interface apps) in Rust. This is currently experimental and is being actively developed. To see the prototype in action, check out this repo. Once the prototype is flushed out further, I will move this code into the crate as experimental & continue further development on it.
Enjoy!