2个版本
0.1.5 | 2020年9月19日 |
---|---|
0.1.4 | 2020年9月12日 |
0.1.3 |
|
0.1.1 |
|
#1209 in 文本处理
49KB
982 行
设计目标是拥有一个高效的漂亮打印器,虽然它使用了一个必须显式传递的分配器,但最大化了泛型编程的使用,同时提供合理的API,保持快速和高效。同时还有内置的括号/括号化功能,以及使用Rust对象表示法进行结构化数据的漂亮打印,以及更通用的对象。
要开始使用,您可以直接使用Printer
类型,或者您可以将Printer
添加到某个东西中,比如将其放在某个结构体的字段中,然后为打印器所给予的任何东西实现HasPrinter特性,只需您说明如何从结构体中可变地和不可变地获取打印器即可。之后,您就可以大步向前了。
定义什么是文档,而无需首先将其显式转换为文档的主要特性是Doclike
。大多数字符串类型 (&str, String, Cow<'_, str>), Doc, DocPtr,以及任何具有From<A> for Cow<'_, str>
的功能都可以直接被视为文档。
为了为自己的类型实现Doclike
,您只需实现alloc
方法,该方法说明了竞技场应该如何跟踪您的元素。做到这一点最简单的方法就是找出如何获取表示您的东西的字符串,然后调用my_thing_as_string.alloc(printer)
,然后让字符串类型的Doclike实现接管。这可以通过查看/examples/lined中的示例来了解,其中我们允许span/slice类型直接被视为文档,通过指定Printer类型还包含有关span来源的底层文件的信息。
依赖项
~1MB
~16K SLoC