#proc-macro #procedural #parse-attributes #bootstrap #user #internal #prom-attire

已删除 prom-attire-bootstrap

用于过程宏(prom-attire)的过程宏引导器(prom-attire-bootstrap)来解析属性(您的用户!)。这是prom-attire的内部依赖项,您无需直接依赖它。

使用旧Rust 2015

0.1.0 2017年4月29日

#12#parse-attributes


用于 prom-attire

MIT/Apache

3KB
55

prom-attire travis-badge cargo-badge license-badge rust-version-badge

过程 属性

当您需要最佳着装的过程宏时。

开发中

此项目使用 clippy 并在CI构建中否认警告。为了确保您的更改将被接受,请在提交拉取请求之前使用 cargo clippy (在nightly rust中通过 cargo install clippy 可用)进行检查(以及通常的 cargo test)。

CI中使用的nightly日期和clippy版本都在 .travis.yml 中固定,因为clippy有时在新nightly发布后会出现几天的问题。在提交拉取请求时,随时可以将其更新为已知的好对。

为什么有三个crate

为什么不只三个crate呢?

当前过程宏的一个问题是,定义过程宏的crates无法使用自己的过程宏。在这种情况下,prom-attire 想要一些属性来控制它如何解析属性(目前,只有顶级 "scope" 属性标识符,即在 attire 中的值 #[attire(scope = shoes)] 中),显然 prom-attire 需要解析这些属性以获取所需的信息,但 prom-attire 整个点在于使解析属性变得轻松,在 prom-attire 中有一个手动解析器意味着任何对 prom-attire 生成的解析代码的升级可能都需要在 prom-attire 中的解析代码中进行重复。

幸运的是,有一个解决方案,通过使用三个crates ;-)

基础是 prom-attire-impl,它实现了整个过程宏 derive,但本身不定义过程宏 derive 宏。相反,它导出一个函数,该函数接受传递给过程宏 derive 的AST和一些配置,并返回派生的实现。

接下来,prom-attire-bootstrap 定义了一个简单的过程宏 derive 宏 FromAttributesBootstrap,该宏使用硬编码的配置调用 prom-attire-impl

最后,prom-attire 定义了一个稍微复杂的过程宏 derive 宏 (FromAttributes),它使用 FromAttributesBootstrap 派生的解析器解析一些属性,然后使用从这些解析属性派生的配置调用 prom-attire-impl。这是crates的 "公开" 入口点,技术上可以使用其他方法,但它们可能不太有用。

因此,最终 prom-attire 是一个定义过程宏 derive 宏的crates,帮助开发者编写过程宏 derive 宏,其实现中使用了过程宏 derive(不,那不是 inception)。

许可证

根据您的选择,许可协议为以下之一:

任选其一。

贡献

除非您明确声明,否则您提交的任何有意包含在作品中的贡献将根据上述条款进行双重许可,不附加任何额外条款或条件。

依赖项

~5.5MB
~113K SLoC