From 0251a26e0dc6c314ac6f1897ca57e52aad84e4db Mon Sep 17 00:00:00 2001 From: sunface Date: Sat, 26 Feb 2022 21:57:07 +0800 Subject: [PATCH] update macro --- contents/advance/macro.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/contents/advance/macro.md b/contents/advance/macro.md index 3187b73a..d024ba36 100644 --- a/contents/advance/macro.md +++ b/contents/advance/macro.md @@ -164,6 +164,8 @@ let v = { 当**创建过程宏**时,它的定义必须要放入一个独立的包中,且包的类型也是特殊的,这么做的原因相当复杂,大家只要知道这种限制在未来可能会有所改变即可。 +> 事实上,根据[这个说法](https://www.reddit.com/r/rust/comments/t1oa1e/what_are_the_complex_technical_reasons_why/),过程宏放入独立包的原因在于它必须先被编译后才能使用,如果过程宏和使用它的代码在一个包,就必须先单独对过程宏的代码进行编译,然后再对我们的代码进行编译,但悲剧的是 Rust 的编译单元是包,因此你无法做到这一点。 + 假设我们要创建一个 `derive` 类型的过程宏: ```rust use proc_macro;