1 个不稳定版本
0.1.0 | 2023 年 3 月 11 日 |
---|
#1288 在 文本处理
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