From cd771fedb7ac0f26ff32470b0d150ca26c5f4c1b Mon Sep 17 00:00:00 2001 From: zhibinr Date: Wed, 21 Apr 2021 20:46:56 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=94=B9=E8=BF=9B=E2=80=9DIn=20a=20moment"?= =?UTF-8?q?=E7=9A=84=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ch19-06-macros.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ch19-06-macros.md b/src/ch19-06-macros.md index 0a60326..41dc8a7 100644 --- a/src/ch19-06-macros.md +++ b/src/ch19-06-macros.md @@ -182,7 +182,7 @@ $ cargo new hello_macro_derive --lib 由于两个 crate 紧密相关,因此在 `hello_macro` 包的目录下创建过程式宏的 crate。如果改变在 `hello_macro` 中定义的 trait ,同时也必须改变在 `hello_macro_derive` 中实现的过程式宏。这两个包需要分别发布,编程人员如果使用这些包,则需要同时添加这两个依赖并将其引入作用域。我们也可以只用 `hello_macro` 包而将 `hello_macro_derive` 作为一个依赖,并重新导出过程式宏的代码。但现在我们组织项目的方式使编程人员在无需 `derive` 功能时也能够单独使用 `hello_macro`。 -需要将 `hello_macro_derive` 声明为一个过程宏的 crate。同时也需要 `syn` 和 `quote` crate 中的功能,正如注释中所说,需要将其加到依赖中。为 `hello_macro_derive` 将下面的代码加入到 *Cargo.toml* 文件中。 +我们需要将 `hello_macro_derive` 声明为一个过程宏(proc-macro)的 crate。正如稍后将看到的那样,我们还需要 `syn` 和 `quote` crate 中的功能,需要将其加到依赖中。将下面的代码加入到 `hello_macro_derive` 的 *Cargo.toml* 文件中。 文件名: hello_macro_derive/Cargo.toml From 42bc09040e2696b15cfc754a38fb72892192452e Mon Sep 17 00:00:00 2001 From: zhibinr Date: Wed, 21 Apr 2021 20:55:14 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E6=94=B9=E8=BF=9B=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ch19-06-macros.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ch19-06-macros.md b/src/ch19-06-macros.md index 41dc8a7..d9b9051 100644 --- a/src/ch19-06-macros.md +++ b/src/ch19-06-macros.md @@ -182,7 +182,7 @@ $ cargo new hello_macro_derive --lib 由于两个 crate 紧密相关,因此在 `hello_macro` 包的目录下创建过程式宏的 crate。如果改变在 `hello_macro` 中定义的 trait ,同时也必须改变在 `hello_macro_derive` 中实现的过程式宏。这两个包需要分别发布,编程人员如果使用这些包,则需要同时添加这两个依赖并将其引入作用域。我们也可以只用 `hello_macro` 包而将 `hello_macro_derive` 作为一个依赖,并重新导出过程式宏的代码。但现在我们组织项目的方式使编程人员在无需 `derive` 功能时也能够单独使用 `hello_macro`。 -我们需要将 `hello_macro_derive` 声明为一个过程宏(proc-macro)的 crate。正如稍后将看到的那样,我们还需要 `syn` 和 `quote` crate 中的功能,需要将其加到依赖中。将下面的代码加入到 `hello_macro_derive` 的 *Cargo.toml* 文件中。 +我们需要声明 `hello_macro_derive` crate 是过程宏(proc-macro) crate。正如稍后将看到的那样,我们还需要 `syn` 和 `quote` crate 中的功能,所以需要将其加到依赖中。将下面的代码加入到 `hello_macro_derive` 的 *Cargo.toml* 文件中。 文件名: hello_macro_derive/Cargo.toml From 54ec8bb473818f4114bbc52d9921790575760025 Mon Sep 17 00:00:00 2001 From: zhibinr Date: Wed, 21 Apr 2021 21:06:48 +0800 Subject: [PATCH 3/3] Update ch19-06-macros.md --- src/ch19-06-macros.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/ch19-06-macros.md b/src/ch19-06-macros.md index d9b9051..ec0d714 100644 --- a/src/ch19-06-macros.md +++ b/src/ch19-06-macros.md @@ -191,8 +191,8 @@ $ cargo new hello_macro_derive --lib proc-macro = true [dependencies] -syn = "0.14.4" -quote = "0.6.3" +syn = "1.0" +quote = "1.0" ``` 为定义一个过程式宏,请将示例 19-31 中的代码放在 `hello_macro_derive` crate 的 *src/lib.rs* 文件里面。注意这段代码在我们添加 `impl_hello_macro` 函数的定义之前是无法编译的。 @@ -220,8 +220,7 @@ use syn; #[proc_macro_derive(HelloMacro)] pub fn hello_macro_derive(input: TokenStream) -> TokenStream { - // 构建 Rust 代码所代表的语法树 - // 以便可以进行操作 + // 将 Rust 代码解析为语法树以便进行操作 let ast = syn::parse(input).unwrap(); // 构建 trait 实现