#ascii-text #animation #terminal-text #print #fancy #cli #printing

bin+lib fancy_print

轻松将动画 ASCII 文本打印到终端!

1 个不稳定版本

0.1.0 2023 年 3 月 11 日

#1288文本处理

MIT 许可证

16KB
172

fancy_print

轻松将动画 ASCII 文本打印到终端!

示例

要开始使用此 crate,您需要创建一个 FancyPrinter。最简单的方法是调用 builder() 函数,并定义您所需选项。您也可以调用 FancyPrinterBuilder::new() 来代替使用 FancyBuilder 结构体,它们是等效的。

在您拥有一个 FancyPrinter 之后,您可以调用 print() 方法来打印动画文本。

以下代码块展示了这一点

use fancy_print::{FancyPrinter, Animation};
use std::time::Duration;

let printer = FancyPrinter::builder()
    .animation(Animation::CharacterCycling)
    .time_delay(Duration::from_millis(2))
    .multi_line(false)
    .ignore_newlines(false)
    .build();

printer.print("Hello, world!");

默认值

上述示例实际上是 FancyPrinter 的默认配置,您可以在以下测试中看到

use fancy_print::{FancyPrinter, Animation};
use std::time::Duration;
let printer = FancyPrinter::builder()
    .animation(Animation::CharacterCycling)
    .time_delay(Duration::from_millis(2))
    .multi_line(false)
    .ignore_newlines(false)
    .build();

let default_printer = FancyPrinter::builder().build();

assert_eq!(printer, default_printer);

因此,第一个示例可以简化为以下内容

use fancy_print::{FancyPrinter, Animation};
use std::time::Duration;

let printer = FancyPrinter::builder().build();

printer.print("Hello, world!");

动画

以下列出了当前列出的动画及其描述,然而,了解它们的最佳方式是看到它们在实际中的效果,因此请复制代码块并运行它们!

字符循环

循环当前字符,直到它与所需的字符匹配,然后移动到文本中的下一个字符。通过增加一个 u8 并将其转换为字符来实现,因此 文本中的所有字符都必须是 ASCII

为了强制执行此操作,如果提供的文本中存在任何非 ASCII 字符,则 print()

use fancy_print::{Animation, FancyPrinter};

let printer = FancyPrinter::builder()
    .animation(Animation::CharacterCycling)
    .build();

printer.print("Hello, world!");

打字

将给定文本逐字符打印到终端,直到打印完所有字符。基本上与您期望的完全相同。这种动画比字符循环动画运行速度快得多,因为没有每个字符的“迭代”,因此我建议在具有这种动画的 FancyPrinter 时更改 time_delay

use fancy_print::{Animation, FancyPrinter};
use std::time::Duration;

let printer = FancyPrinter::builder()
    .animation(Animation::Typing)
    .time_delay(Duration::from_millis(100))
    .build();

printer.print("Hello, world!");

依赖关系

~1.2–1.8MB
~34K SLoC