2个版本

0.1.5 2020年9月19日
0.1.4 2020年9月12日
0.1.3 2020年9月10日
0.1.1 2020年9月8日

#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