8个版本 (5个重大更新)
0.5.0 | 2024年6月6日 |
---|---|
0.4.0 | 2023年6月27日 |
0.3.0 | 2023年4月24日 |
0.2.2 | 2023年4月8日 |
0.0.0 | 2020年8月18日 |
#85 in 过程宏
每月下载量679
在6个crate中使用了(通过emit_macros)
39KB
847 行
fv-template
入门指南
在你的过程宏crate中,你可以添加fv-template
作为依赖项。你的过程宏的消费者不需要自己依赖fv-template
。
有关字段值模板是什么以及为什么你可能想使用它们的详细信息,请参阅文档。
如何使用它?
这个库旨在由过程宏作者使用,例如emit
。它本身不定义任何宏。
请参阅examples
目录中的示例,该示例展示了如何在过程宏和消费者应用程序中使用fv-template
。
lib.rs
:
编译时支持使用字段值表达式进行插值字符串模板。
字段值模板
字段值模板是一个被字段值表达式包围的字面量字符串
a, b: 42, "Some text {c} and {d: true}", e, f: "text"
───┬──── ───────────────┬───────────── ──────┬─────
before literal literal after literal
模板字符串字面量由文本块组成,其中括号之间有间隔,其中括号中的值是一个字段值表达式
"Some text {c} and {d: true}"
─┬─ ────┬────
└────┬─────┘
hole
"Some text {c} and {d: true}"
─────┬──── ──┬──
└────┬────┘
text
语法类似于Rust的format_args!
宏,但完全依赖于标准字段值表达式来指定要插值的值。
为什么不使用format_args!
?
Rust的format_args!
宏已经定义了字符串插值的语法,但不适用于所有情况
- 它的主要目的是构建字符串。
format_args!
基于一种机制,它会积极地丢弃特定于类型的类型信息。它还在编译时执行某些优化,将某些值内联到构建器中。 - 它没有程序性API。你只能通过观察编译时传递给它的语法符号来做出关于
format_args!
调用的行为的假设。你无法获得对格式字面量的任何可见性。 - 标志在格式化时紧凑,但无法扩展。用于自定义格式的
:?#<>
标记紧凑,但透明度低,不像属性那样自然地允许进行任意复杂的注释。
当format_args!
中的任何权衡成为问题时,字段值模板可能是一个解决方案。
依赖项
~245–690KB
~16K SLoC