rusty_textui/
lib.rs

1pub mod frame;
2pub mod screen;
3
4pub mod prelude {
5    pub use crate::screen::Screen;
6    pub use crate::VecChar;
7    pub use crossterm::{
8        self,
9        event::{Event, KeyCode},
10        style::Color,
11    };
12}
13
14/// A type that implements the `VecChar` trait can be transformed into a `Vec<char>`. The
15/// [`Screen`](crate::screen::Screen)'s `draw*` methods take anything that implements this trait.
16/// Implementations are provided for `&str` and `String`.
17pub trait VecChar {
18    fn vec_char(self) -> VecOrChar;
19}
20
21impl VecChar for &str {
22    fn vec_char(self) -> VecOrChar {
23        VecOrChar::Vec(self.chars().collect())
24    }
25}
26
27impl VecChar for String {
28    fn vec_char(self) -> VecOrChar {
29        VecOrChar::Vec(self.chars().collect())
30    }
31}
32
33impl VecChar for &String {
34    fn vec_char(self) -> VecOrChar {
35        VecOrChar::Vec(self.chars().collect())
36    }
37}
38
39impl VecChar for char {
40    fn vec_char(self) -> VecOrChar {
41        VecOrChar::Char(self)
42    }
43}
44
45pub enum VecOrChar {
46    Vec(Vec<char>),
47    Char(char),
48}