Rust修仙之道 第十四章 宏灵境 · 灵咒重铸之术

第十四章:宏灵境 · 灵咒重铸之术

“术之极者,可铸术自身;言之极者,语法亦可铸。”

顾行云在整理灵术模块时,发现冗余术式重复繁复,若能一术生万术,岂非大成?
此时,一道灵书显现:《宏灵咒典》

一、声明式宏:macro_rules! 之符

这是一种模式匹配式灵咒,可根据输入匹配并展开。

示例:打印多个灵符
macro_rules! summon {
    ($($x:expr),*) => {
        $(
            println!("召唤灵符:{}", $x);
        )*
    };
}

fn main() {
    summon!("火符", "冰符", "雷符");
}

他惊叹:“这不只是语法糖,这是咒语工厂!”

关键要素:

  • $():重复匹配模式

  • *:任意多个(或可用 + 表示至少一个)

  • $x:expr:匹配表达式

二、派生宏(derive)之术

顾行云曾手写 Debug / Clone 等 trait 实现疲惫不堪,直到他发现派生宏之术:

#[derive(Debug, Clone, PartialEq)]
struct Spell {
    name: String,
    level: u32,
}

编译灵印自动生成对应 trait 实现,让灵体拥有“调试视界”、“复制术”等能力。

三、过程宏:自造灵纹之顶阶术

若要定义新的属性宏、嵌套规则、改变语法结构,必须使用 proc_macro

步骤如下:

  1. 创建专属宏法门包(类库)
cargo new spell_macro --lib
  1. lib.rs 中启用:
extern crate proc_macro;
use proc_macro::TokenStream;

#[proc_macro]
pub fn spirit_bless(input: TokenStream) -> TokenStream {
    // 处理语法树,生成新代码
    input
}
  1. 在主项目中调用:
use spell_macro::spirit_bless;

spirit_bless! {
    fn chant() {
       println!("✨ 灵术被祝福");
    }
}

🧠 顾行云逐渐熟练 quote!, syn 等神级语义操控库,如法如术,开辟自己的语法领域。

宏灵诀 · 拓语之理

语不止所见,亦可被构;术不止于写,亦可自生;宏者,道中之神铸也。


⬅️ 上一章            [下一章 待续➡️]

原创作者: niceWk 转载于: https://www.cnblogs.com/niceWk/p/18980980
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值