用 declarative macro 做了个小东西

💡 原文中文,约4200字,阅读约需10分钟。
📝

内容提要

本文介绍了使用 ddnspod 时如何利用宏减少重复代码的编写,分享了编写符合预期且行为复杂的 declarative macro 的挑战性和成就感。

🎯

关键要点

  • 文章介绍了如何使用 ddnspod 的宏来减少重复代码的编写。

  • 定义了一个名为 custom_meta_struct 的宏,用于处理多个 Action 的共同属性和字段。

  • 通过 trait CommonParams 来统一处理 url 和 version 的获取。

  • 提供了简单和复杂的宏用法示例,展示了如何定义和实现结构体。

  • 使用了回调宏 define_structs 来格式化和展开代码。

  • overriding_method 宏用于重载 trait 方法,以便为特定结构体提供自定义的 url 和 version。

  • 最终实现的 custom_meta_struct 代码量约为 300 行,编写过程具有挑战性但也带来了成就感。

➡️

继续阅读