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 过程宏

Download history 5/week @ 2024-04-26 19/week @ 2024-05-03 7/week @ 2024-05-17 2/week @ 2024-05-24 287/week @ 2024-05-31 558/week @ 2024-06-07 40/week @ 2024-06-14 162/week @ 2024-06-21 19/week @ 2024-06-28 49/week @ 2024-07-05 43/week @ 2024-07-12 83/week @ 2024-07-19 299/week @ 2024-07-26 249/week @ 2024-08-02

每月下载量679
6个crate中使用了(通过emit_macros

MIT 许可证

39KB
847

fv-template

Rust Latest version Documentation Latest

入门指南

在你的过程宏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