pub struct Rule {
pub gradient: Option<Box<dyn Gradient>>,
pub symbol_set: Set,
pub orientation: Orientation,
pub padding: Padding,
pub vertical_alignment: VerticalAlignment,
pub horizontal_alignment: Alignment,
pub extra_rep_1: usize,
pub extra_rep_2: usize,
pub bg: Bg,
pub area_margin: Margin,
}Expand description
Fields§
§gradient: Option<Box<dyn Gradient>>§symbol_set: Set§orientation: Orientation§padding: Padding§vertical_alignment: VerticalAlignment§horizontal_alignment: Alignment§extra_rep_1: usize§extra_rep_2: usize§bg: Bg§area_margin: MarginImplementations§
Source§impl Rule
impl Rule
Sourcepub fn new() -> Self
pub fn new() -> Self
generates a new rule that looks like ───────────── with no gradient and no padding
centered horizontally and vertically by default
Sourcepub fn area_margin(self, margin: Margin) -> Self
pub fn area_margin(self, margin: Margin) -> Self
Examples found in repository?
2 fn run(
3 terminal: &mut DefaultTerminal,
4 ) -> io::Result<()> {
5 loop {
6 terminal.draw(|f| {
7 let block = Block::bordered().title_top(
8 Line::from(generate_gradient_text!(
9 "ASCII",
10 colorgrad::preset::warm()
11 ))
12 .centered(),
13 );
14 use presets::borders::plain::*;
15 let marg =
16 ratatui::layout::Margin::new(0, 0);
17 let right = Rule::from_set(RIGHT)
18 .area_margin(marg)
19 .horizontal_alignment(Alignment::Right)
20 .vertical();
21 let left = Rule::from_set(LEFT)
22 .area_margin(marg)
23 .horizontal_alignment(Alignment::Left)
24 .vertical();
25 let top = Rule::from_set(TOP).area_margin(marg).vertical_alignment(VerticalAlignment::Top);
26 let bottom = Rule::from_set(BOTTOM).area_margin(marg).vertical_alignment(VerticalAlignment::Bottom);
27 f.render_widget(right, f.area());
28 f.render_widget(left, f.area());
29 f.render_widget(top, f.area());
30 f.render_widget(bottom, f.area());
31 })?;
32 let event = event::read()?;
33 if let Event::Key(key_event) = event {
34 if key_event.kind == KeyEventKind::Press {
35 match key_event.code {
36 KeyCode::Char('q') => {
37 break Ok(());
38 }
39 _ => {}
40 }
41 }
42 }
43 }
44 }Sourcepub fn bg_same_gradient(self) -> Self
pub fn bg_same_gradient(self) -> Self
makes the bg use the same gradient as the fg
pub fn extra_rep_1(self, rep: usize) -> Self
pub fn extra_rep_2(self, rep: usize) -> Self
pub fn extra_rep(self, rep_1: usize, rep_2: usize) -> Self
Sourcepub fn bg_gradient<G: Gradient + 'static>(self, g: G) -> Self
pub fn bg_gradient<G: Gradient + 'static>(self, g: G) -> Self
makes the bg a custom gradient
pub fn bg(self, bg: Bg) -> Self
Sourcepub fn new_vertical() -> Self
pub fn new_vertical() -> Self
creates a new vertical rule
Sourcepub fn from_set(set: Set) -> Self
pub fn from_set(set: Set) -> Self
Creates a new rule instance from a Set struct
let rule = Rule::from_set(presets::horizontal::ASCII);
// Has the start, end, center, right, and left symbols from the horizontal ASCII preset
frame.render_widget(rule, frame.area())Examples found in repository?
2 fn run(
3 terminal: &mut DefaultTerminal,
4 ) -> io::Result<()> {
5 loop {
6 terminal.draw(|f| {
7 let block = Block::bordered();
8 let rule = Rule::from_set(
9 presets::test_sets::HORIZONTAL,
10 )
11 .with_gradient(colorgrad::preset::warm())
12 .horizontal_padding(4);
13 f.render_widget(rule, f.area());
14 f.render_widget(block, f.area());
15 })?;
16 let event = event::read()?;
17
18 if let Event::Key(key_event) = event {
19 if key_event.kind == KeyEventKind::Press {
20 if let KeyCode::Char('q') =
21 key_event.code
22 {
23 break Ok(());
24 }
25 }
26 }
27 }
28 }More examples
2 fn run(
3 terminal: &mut DefaultTerminal,
4 ) -> io::Result<()> {
5 loop {
6 terminal.draw(|f| {
7 let block = Block::bordered();
8 let rule = Rule::from_set(
9 presets::test_sets::VERTICAL,
10 )
11 .with_gradient(colorgrad::preset::warm())
12 .vertical()
13 .vertical_padding(1);
14 f.render_widget(rule, f.area());
15 f.render_widget(block, f.area());
16 })?;
17 let event = event::read()?;
18
19 if let Event::Key(key_event) = event {
20 if key_event.kind == KeyEventKind::Press {
21 if let KeyCode::Char('q') =
22 key_event.code
23 {
24 break Ok(());
25 }
26 }
27 }
28 }
29 }2 fn run(
3 terminal: &mut DefaultTerminal,
4 ) -> io::Result<()> {
5 loop {
6 terminal.draw(|f| {
7 let block = Block::bordered();
8 let rule_vert = Rule::from_set(
9 presets::test_sets::VERTICAL,
10 )
11 .horizontal_alignment(Alignment::Left)
12 .vertical()
13 .horizontal_padding(4)
14 .vertical_padding(1);
15 let rule_hor = Rule::from_set(
16 presets::test_sets::HORIZONTAL,
17 )
18 .horizontal_padding(6);
19 f.render_widget(rule_hor, f.area());
20 f.render_widget(rule_vert, f.area());
21 f.render_widget(block, f.area());
22 })?;
23 let event = event::read()?;
24 if let Event::Key(key_event) = event {
25 if key_event.kind == KeyEventKind::Press {
26 match key_event.code {
27 KeyCode::Char('q') => {
28 break Ok(());
29 }
30 _ => {}
31 }
32 }
33 }
34 }
35 }2 fn run(
3 terminal: &mut DefaultTerminal,
4 ) -> io::Result<()> {
5 loop {
6 terminal.draw(|f| {
7 let block = Block::bordered().title_top(
8 Line::from(
9 crate::generate_gradient_text!(
10 "Vertical",
11 colorgrad::preset::warm()
12 ),
13 )
14 .centered(),
15 );
16 let rule_hor = Rule::from_set(
17 presets::test_sets::VERTICAL,
18 ).vertical()
19 .vertical_padding(1)
20 .with_gradient(colorgrad::preset::warm());
21 f.render_widget(rule_hor, f.area());
22 f.render_widget(block, f.area());
23 })?;
24 let event = event::read()?;
25 if let Event::Key(key_event) = event {
26 if key_event.kind == KeyEventKind::Press {
27 match key_event.code {
28 KeyCode::Char('q') => {
29 break Ok(());
30 }
31 _ => {}
32 }
33 }
34 }
35 }
36 }2 fn run(
3 terminal: &mut DefaultTerminal,
4 ) -> io::Result<()> {
5 loop {
6 terminal.draw(|f| {
7 let block = Block::bordered().title_top(
8 Line::from(generate_gradient_text!(
9 "ASCII",
10 colorgrad::preset::warm()
11 ))
12 .centered(),
13 );
14 use presets::borders::plain::*;
15 let marg =
16 ratatui::layout::Margin::new(0, 0);
17 let right = Rule::from_set(RIGHT)
18 .area_margin(marg)
19 .horizontal_alignment(Alignment::Right)
20 .vertical();
21 let left = Rule::from_set(LEFT)
22 .area_margin(marg)
23 .horizontal_alignment(Alignment::Left)
24 .vertical();
25 let top = Rule::from_set(TOP).area_margin(marg).vertical_alignment(VerticalAlignment::Top);
26 let bottom = Rule::from_set(BOTTOM).area_margin(marg).vertical_alignment(VerticalAlignment::Bottom);
27 f.render_widget(right, f.area());
28 f.render_widget(left, f.area());
29 f.render_widget(top, f.area());
30 f.render_widget(bottom, f.area());
31 })?;
32 let event = event::read()?;
33 if let Event::Key(key_event) = event {
34 if key_event.kind == KeyEventKind::Press {
35 match key_event.code {
36 KeyCode::Char('q') => {
37 break Ok(());
38 }
39 _ => {}
40 }
41 }
42 }
43 }
44 }Sourcepub fn new_with_gradient<G: Gradient + 'static>(gradient: G) -> Self
pub fn new_with_gradient<G: Gradient + 'static>(gradient: G) -> Self
the new function and the with_gradient function combined
// displays a new rule with a rainbow gradient
Rule::new_with_gradient(colorgrad::preset::rainbow())Sourcepub fn with_gradient<G: Gradient + 'static>(self, gradient: G) -> Self
pub fn with_gradient<G: Gradient + 'static>(self, gradient: G) -> Self
sets gradient for rule. uses colorgrad gradients
// displays `+=====+=====+` with a rainbow gradient
Rule::default().with_gradient(colorgrad::preset::rainbow())Examples found in repository?
2 fn run(
3 terminal: &mut DefaultTerminal,
4 ) -> io::Result<()> {
5 loop {
6 terminal.draw(|f| {
7 let block = Block::bordered();
8 let rule = Rule::from_set(
9 presets::test_sets::HORIZONTAL,
10 )
11 .with_gradient(colorgrad::preset::warm())
12 .horizontal_padding(4);
13 f.render_widget(rule, f.area());
14 f.render_widget(block, f.area());
15 })?;
16 let event = event::read()?;
17
18 if let Event::Key(key_event) = event {
19 if key_event.kind == KeyEventKind::Press {
20 if let KeyCode::Char('q') =
21 key_event.code
22 {
23 break Ok(());
24 }
25 }
26 }
27 }
28 }More examples
2 fn run(
3 terminal: &mut DefaultTerminal,
4 ) -> io::Result<()> {
5 loop {
6 terminal.draw(|f| {
7 let block = Block::bordered();
8 let rule = Rule::from_set(
9 presets::test_sets::VERTICAL,
10 )
11 .with_gradient(colorgrad::preset::warm())
12 .vertical()
13 .vertical_padding(1);
14 f.render_widget(rule, f.area());
15 f.render_widget(block, f.area());
16 })?;
17 let event = event::read()?;
18
19 if let Event::Key(key_event) = event {
20 if key_event.kind == KeyEventKind::Press {
21 if let KeyCode::Char('q') =
22 key_event.code
23 {
24 break Ok(());
25 }
26 }
27 }
28 }
29 }2 fn run(
3 terminal: &mut DefaultTerminal,
4 ) -> io::Result<()> {
5 loop {
6 terminal.draw(|f| {
7 let block = Block::bordered().title_top(
8 Line::from(
9 crate::generate_gradient_text!(
10 "Vertical",
11 colorgrad::preset::warm()
12 ),
13 )
14 .centered(),
15 );
16 let rule_hor = Rule::from_set(
17 presets::test_sets::VERTICAL,
18 ).vertical()
19 .vertical_padding(1)
20 .with_gradient(colorgrad::preset::warm());
21 f.render_widget(rule_hor, f.area());
22 f.render_widget(block, f.area());
23 })?;
24 let event = event::read()?;
25 if let Event::Key(key_event) = event {
26 if key_event.kind == KeyEventKind::Press {
27 match key_event.code {
28 KeyCode::Char('q') => {
29 break Ok(());
30 }
31 _ => {}
32 }
33 }
34 }
35 }
36 }Sourcepub fn horizontal_padding(self, padding: u16) -> Self
pub fn horizontal_padding(self, padding: u16) -> Self
sets the horizontal padding
Examples found in repository?
2 fn run(
3 terminal: &mut DefaultTerminal,
4 ) -> io::Result<()> {
5 loop {
6 terminal.draw(|f| {
7 let block = Block::bordered();
8 let rule = Rule::from_set(
9 presets::test_sets::HORIZONTAL,
10 )
11 .with_gradient(colorgrad::preset::warm())
12 .horizontal_padding(4);
13 f.render_widget(rule, f.area());
14 f.render_widget(block, f.area());
15 })?;
16 let event = event::read()?;
17
18 if let Event::Key(key_event) = event {
19 if key_event.kind == KeyEventKind::Press {
20 if let KeyCode::Char('q') =
21 key_event.code
22 {
23 break Ok(());
24 }
25 }
26 }
27 }
28 }More examples
2 fn run(
3 terminal: &mut DefaultTerminal,
4 ) -> io::Result<()> {
5 loop {
6 terminal.draw(|f| {
7 let block = Block::bordered();
8 let rule_vert = Rule::from_set(
9 presets::test_sets::VERTICAL,
10 )
11 .horizontal_alignment(Alignment::Left)
12 .vertical()
13 .horizontal_padding(4)
14 .vertical_padding(1);
15 let rule_hor = Rule::from_set(
16 presets::test_sets::HORIZONTAL,
17 )
18 .horizontal_padding(6);
19 f.render_widget(rule_hor, f.area());
20 f.render_widget(rule_vert, f.area());
21 f.render_widget(block, f.area());
22 })?;
23 let event = event::read()?;
24 if let Event::Key(key_event) = event {
25 if key_event.kind == KeyEventKind::Press {
26 match key_event.code {
27 KeyCode::Char('q') => {
28 break Ok(());
29 }
30 _ => {}
31 }
32 }
33 }
34 }
35 }Sourcepub fn vertical_padding(self, padding: u16) -> Self
pub fn vertical_padding(self, padding: u16) -> Self
sets the vertical padding
Examples found in repository?
2 fn run(
3 terminal: &mut DefaultTerminal,
4 ) -> io::Result<()> {
5 loop {
6 terminal.draw(|f| {
7 let block = Block::bordered();
8 let rule = Rule::from_set(
9 presets::test_sets::VERTICAL,
10 )
11 .with_gradient(colorgrad::preset::warm())
12 .vertical()
13 .vertical_padding(1);
14 f.render_widget(rule, f.area());
15 f.render_widget(block, f.area());
16 })?;
17 let event = event::read()?;
18
19 if let Event::Key(key_event) = event {
20 if key_event.kind == KeyEventKind::Press {
21 if let KeyCode::Char('q') =
22 key_event.code
23 {
24 break Ok(());
25 }
26 }
27 }
28 }
29 }More examples
2 fn run(
3 terminal: &mut DefaultTerminal,
4 ) -> io::Result<()> {
5 loop {
6 terminal.draw(|f| {
7 let block = Block::bordered();
8 let rule_vert = Rule::from_set(
9 presets::test_sets::VERTICAL,
10 )
11 .horizontal_alignment(Alignment::Left)
12 .vertical()
13 .horizontal_padding(4)
14 .vertical_padding(1);
15 let rule_hor = Rule::from_set(
16 presets::test_sets::HORIZONTAL,
17 )
18 .horizontal_padding(6);
19 f.render_widget(rule_hor, f.area());
20 f.render_widget(rule_vert, f.area());
21 f.render_widget(block, f.area());
22 })?;
23 let event = event::read()?;
24 if let Event::Key(key_event) = event {
25 if key_event.kind == KeyEventKind::Press {
26 match key_event.code {
27 KeyCode::Char('q') => {
28 break Ok(());
29 }
30 _ => {}
31 }
32 }
33 }
34 }
35 }2 fn run(
3 terminal: &mut DefaultTerminal,
4 ) -> io::Result<()> {
5 loop {
6 terminal.draw(|f| {
7 let block = Block::bordered().title_top(
8 Line::from(
9 crate::generate_gradient_text!(
10 "Vertical",
11 colorgrad::preset::warm()
12 ),
13 )
14 .centered(),
15 );
16 let rule_hor = Rule::from_set(
17 presets::test_sets::VERTICAL,
18 ).vertical()
19 .vertical_padding(1)
20 .with_gradient(colorgrad::preset::warm());
21 f.render_widget(rule_hor, f.area());
22 f.render_widget(block, f.area());
23 })?;
24 let event = event::read()?;
25 if let Event::Key(key_event) = event {
26 if key_event.kind == KeyEventKind::Press {
27 match key_event.code {
28 KeyCode::Char('q') => {
29 break Ok(());
30 }
31 _ => {}
32 }
33 }
34 }
35 }
36 }Sourcepub fn right_padding(self, padding: u16) -> Self
pub fn right_padding(self, padding: u16) -> Self
Sets the right padding
Sourcepub fn left_padding(self, padding: u16) -> Self
pub fn left_padding(self, padding: u16) -> Self
Sets the left padding
Sourcepub fn top_padding(self, padding: u16) -> Self
pub fn top_padding(self, padding: u16) -> Self
Sets the top padding
Sourcepub fn bottom_padding(self, padding: u16) -> Self
pub fn bottom_padding(self, padding: u16) -> Self
Sets the bottom padding
Sourcepub fn with_set(self, set: Set) -> Self
pub fn with_set(self, set: Set) -> Self
Sets the end, start, right, center, and left symbols from the Set struct
Sourcepub fn horizontal(self) -> Self
pub fn horizontal(self) -> Self
makes the rule horizontal instead of vertical. Horizontal by default
Sourcepub fn vertical(self) -> Self
pub fn vertical(self) -> Self
makes the rule a vertical rule instead of horizontal
Examples found in repository?
2 fn run(
3 terminal: &mut DefaultTerminal,
4 ) -> io::Result<()> {
5 loop {
6 terminal.draw(|f| {
7 let block = Block::bordered();
8 let rule = Rule::from_set(
9 presets::test_sets::VERTICAL,
10 )
11 .with_gradient(colorgrad::preset::warm())
12 .vertical()
13 .vertical_padding(1);
14 f.render_widget(rule, f.area());
15 f.render_widget(block, f.area());
16 })?;
17 let event = event::read()?;
18
19 if let Event::Key(key_event) = event {
20 if key_event.kind == KeyEventKind::Press {
21 if let KeyCode::Char('q') =
22 key_event.code
23 {
24 break Ok(());
25 }
26 }
27 }
28 }
29 }More examples
2 fn run(
3 terminal: &mut DefaultTerminal,
4 ) -> io::Result<()> {
5 loop {
6 terminal.draw(|f| {
7 let block = Block::bordered();
8 let rule_vert = Rule::from_set(
9 presets::test_sets::VERTICAL,
10 )
11 .horizontal_alignment(Alignment::Left)
12 .vertical()
13 .horizontal_padding(4)
14 .vertical_padding(1);
15 let rule_hor = Rule::from_set(
16 presets::test_sets::HORIZONTAL,
17 )
18 .horizontal_padding(6);
19 f.render_widget(rule_hor, f.area());
20 f.render_widget(rule_vert, f.area());
21 f.render_widget(block, f.area());
22 })?;
23 let event = event::read()?;
24 if let Event::Key(key_event) = event {
25 if key_event.kind == KeyEventKind::Press {
26 match key_event.code {
27 KeyCode::Char('q') => {
28 break Ok(());
29 }
30 _ => {}
31 }
32 }
33 }
34 }
35 }2 fn run(
3 terminal: &mut DefaultTerminal,
4 ) -> io::Result<()> {
5 loop {
6 terminal.draw(|f| {
7 let block = Block::bordered().title_top(
8 Line::from(
9 crate::generate_gradient_text!(
10 "Vertical",
11 colorgrad::preset::warm()
12 ),
13 )
14 .centered(),
15 );
16 let rule_hor = Rule::from_set(
17 presets::test_sets::VERTICAL,
18 ).vertical()
19 .vertical_padding(1)
20 .with_gradient(colorgrad::preset::warm());
21 f.render_widget(rule_hor, f.area());
22 f.render_widget(block, f.area());
23 })?;
24 let event = event::read()?;
25 if let Event::Key(key_event) = event {
26 if key_event.kind == KeyEventKind::Press {
27 match key_event.code {
28 KeyCode::Char('q') => {
29 break Ok(());
30 }
31 _ => {}
32 }
33 }
34 }
35 }
36 }2 fn run(
3 terminal: &mut DefaultTerminal,
4 ) -> io::Result<()> {
5 loop {
6 terminal.draw(|f| {
7 let block = Block::bordered().title_top(
8 Line::from(generate_gradient_text!(
9 "ASCII",
10 colorgrad::preset::warm()
11 ))
12 .centered(),
13 );
14 use presets::borders::plain::*;
15 let marg =
16 ratatui::layout::Margin::new(0, 0);
17 let right = Rule::from_set(RIGHT)
18 .area_margin(marg)
19 .horizontal_alignment(Alignment::Right)
20 .vertical();
21 let left = Rule::from_set(LEFT)
22 .area_margin(marg)
23 .horizontal_alignment(Alignment::Left)
24 .vertical();
25 let top = Rule::from_set(TOP).area_margin(marg).vertical_alignment(VerticalAlignment::Top);
26 let bottom = Rule::from_set(BOTTOM).area_margin(marg).vertical_alignment(VerticalAlignment::Bottom);
27 f.render_widget(right, f.area());
28 f.render_widget(left, f.area());
29 f.render_widget(top, f.area());
30 f.render_widget(bottom, f.area());
31 })?;
32 let event = event::read()?;
33 if let Event::Key(key_event) = event {
34 if key_event.kind == KeyEventKind::Press {
35 match key_event.code {
36 KeyCode::Char('q') => {
37 break Ok(());
38 }
39 _ => {}
40 }
41 }
42 }
43 }
44 }Sourcepub fn rep_2(self, symb: char) -> Self
pub fn rep_2(self, symb: char) -> Self
repeated symbol for right side
Rule::default().rep_2('-')+=====+-----+
Sourcepub fn rep_1(self, symb: char) -> Self
pub fn rep_1(self, symb: char) -> Self
repeated symbol for left side
Rule::default().rep_1('-')+-----+=====+
Sourcepub fn center(self, symb: char) -> Self
pub fn center(self, symb: char) -> Self
center symbol
Rule::default().center('%')+=====%=====+
Sourcepub fn main_symbol(self, symb: char) -> Self
pub fn main_symbol(self, symb: char) -> Self
the rep_1 and the rep_2 functions in one
pub fn padding(self, padding: Padding) -> Self
Sourcepub fn orientation(self, orientation: Orientation) -> Self
pub fn orientation(self, orientation: Orientation) -> Self
sets rule orientation
// creates a vertical rule
Rule::default().orientation(Orientation::Vertical)/// using the .horizontal() and .vertical() methods instead is recommended for simplicity
Sourcepub fn vertical_alignment(self, alignment: VerticalAlignment) -> Self
pub fn vertical_alignment(self, alignment: VerticalAlignment) -> Self
sets vertical alignment centered by default
// creates a rule thats vertically aligned to the top
Rule::default().vertical_alignment(VerticalAlignment::Top)Examples found in repository?
2 fn run(
3 terminal: &mut DefaultTerminal,
4 ) -> io::Result<()> {
5 loop {
6 terminal.draw(|f| {
7 let block = Block::bordered().title_top(
8 Line::from(generate_gradient_text!(
9 "ASCII",
10 colorgrad::preset::warm()
11 ))
12 .centered(),
13 );
14 use presets::borders::plain::*;
15 let marg =
16 ratatui::layout::Margin::new(0, 0);
17 let right = Rule::from_set(RIGHT)
18 .area_margin(marg)
19 .horizontal_alignment(Alignment::Right)
20 .vertical();
21 let left = Rule::from_set(LEFT)
22 .area_margin(marg)
23 .horizontal_alignment(Alignment::Left)
24 .vertical();
25 let top = Rule::from_set(TOP).area_margin(marg).vertical_alignment(VerticalAlignment::Top);
26 let bottom = Rule::from_set(BOTTOM).area_margin(marg).vertical_alignment(VerticalAlignment::Bottom);
27 f.render_widget(right, f.area());
28 f.render_widget(left, f.area());
29 f.render_widget(top, f.area());
30 f.render_widget(bottom, f.area());
31 })?;
32 let event = event::read()?;
33 if let Event::Key(key_event) = event {
34 if key_event.kind == KeyEventKind::Press {
35 match key_event.code {
36 KeyCode::Char('q') => {
37 break Ok(());
38 }
39 _ => {}
40 }
41 }
42 }
43 }
44 }Sourcepub fn horizontal_alignment(self, alignment: Alignment) -> Self
pub fn horizontal_alignment(self, alignment: Alignment) -> Self
Examples found in repository?
2 fn run(
3 terminal: &mut DefaultTerminal,
4 ) -> io::Result<()> {
5 loop {
6 terminal.draw(|f| {
7 let block = Block::bordered();
8 let rule_vert = Rule::from_set(
9 presets::test_sets::VERTICAL,
10 )
11 .horizontal_alignment(Alignment::Left)
12 .vertical()
13 .horizontal_padding(4)
14 .vertical_padding(1);
15 let rule_hor = Rule::from_set(
16 presets::test_sets::HORIZONTAL,
17 )
18 .horizontal_padding(6);
19 f.render_widget(rule_hor, f.area());
20 f.render_widget(rule_vert, f.area());
21 f.render_widget(block, f.area());
22 })?;
23 let event = event::read()?;
24 if let Event::Key(key_event) = event {
25 if key_event.kind == KeyEventKind::Press {
26 match key_event.code {
27 KeyCode::Char('q') => {
28 break Ok(());
29 }
30 _ => {}
31 }
32 }
33 }
34 }
35 }More examples
2 fn run(
3 terminal: &mut DefaultTerminal,
4 ) -> io::Result<()> {
5 loop {
6 terminal.draw(|f| {
7 let block = Block::bordered().title_top(
8 Line::from(generate_gradient_text!(
9 "ASCII",
10 colorgrad::preset::warm()
11 ))
12 .centered(),
13 );
14 use presets::borders::plain::*;
15 let marg =
16 ratatui::layout::Margin::new(0, 0);
17 let right = Rule::from_set(RIGHT)
18 .area_margin(marg)
19 .horizontal_alignment(Alignment::Right)
20 .vertical();
21 let left = Rule::from_set(LEFT)
22 .area_margin(marg)
23 .horizontal_alignment(Alignment::Left)
24 .vertical();
25 let top = Rule::from_set(TOP).area_margin(marg).vertical_alignment(VerticalAlignment::Top);
26 let bottom = Rule::from_set(BOTTOM).area_margin(marg).vertical_alignment(VerticalAlignment::Bottom);
27 f.render_widget(right, f.area());
28 f.render_widget(left, f.area());
29 f.render_widget(top, f.area());
30 f.render_widget(bottom, f.area());
31 })?;
32 let event = event::read()?;
33 if let Event::Key(key_event) = event {
34 if key_event.kind == KeyEventKind::Press {
35 match key_event.code {
36 KeyCode::Char('q') => {
37 break Ok(());
38 }
39 _ => {}
40 }
41 }
42 }
43 }
44 }Trait Implementations§
Auto Trait Implementations§
impl Freeze for Rule
impl !RefUnwindSafe for Rule
impl !Send for Rule
impl !Sync for Rule
impl Unpin for Rule
impl UnsafeUnpin for Rule
impl !UnwindSafe for Rule
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more