Ratatui Logo
A fun example of using half blocks to render graphics.
git clone https://github.com/ratatui/ratatui.git --branch latestcd ratatuicargo run --example=ratatui-logo --features=crossterm
//! # [Ratatui] Logo example//!//! The latest version of this example is available in the [examples] folder in the repository.//!//! Please note that the examples are designed to be run against the `main` branch of the Github//! repository. This means that you may not be able to compile with the latest release version on//! crates.io, or the one that you have installed locally.//!//! See the [examples readme] for more information on finding examples that match the version of the//! library you are using.//!//! [Ratatui]: https://github.com/ratatui/ratatui//! [examples]: https://github.com/ratatui/ratatui/blob/main/examples//! [examples readme]: https://github.com/ratatui/ratatui/blob/main/examples/README.md
use std::{    io::{self},    thread::sleep,    time::Duration,};
use indoc::indoc;use itertools::izip;use ratatui::{widgets::Paragraph, TerminalOptions, Viewport};
/// A fun example of using half block characters to draw a logo#[allow(clippy::many_single_char_names)]fn logo() -> String {    let r = indoc! {"            ▄▄▄            █▄▄▀            █  █        "};    let a = indoc! {"             ▄▄            █▄▄█            █  █        "};    let t = indoc! {"            ▄▄▄             █             █        "};    let u = indoc! {"            ▄  ▄            █  █            ▀▄▄▀        "};    let i = indoc! {"            ▄            █            █        "};    izip!(r.lines(), a.lines(), t.lines(), u.lines(), i.lines())        .map(|(r, a, t, u, i)| format!("{r:5}{a:5}{t:4}{a:5}{t:4}{u:5}{i:5}"))        .collect::<Vec<_>>()        .join("\n")}
fn main() -> io::Result<()> {    let mut terminal = ratatui::init_with_options(TerminalOptions {        viewport: Viewport::Inline(3),    });    terminal.draw(|frame| frame.render_widget(Paragraph::new(logo()), frame.area()))?;    sleep(Duration::from_secs(5));    ratatui::restore();    println!();    Ok(())}