|  |  | @ -163,7 +163,7 @@ $ cargo new hello_macro_derive --lib | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | <span class="caption">示例 19-31: 大多数过程式宏处理 Rust 代码时所需的代码</span> |  |  |  | <span class="caption">示例 19-31: 大多数过程式宏处理 Rust 代码时所需的代码</span> | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 注意我们将代码分成了`hello_macro_derive` 和 `impl_macro_derive` 两个函数,前者负责解析 `TokenStream`,后者负责转换语法树:这使得编写过程宏更方便。几乎你看到或者创建的每一个过程宏的外部函数(这里是`hello_macro_derive`)中的代码都跟这里是一样的。你放入内部函数(这里是`impl_macro_derive`)中的代码根据你的过程宏的设计目的会有所不同。 |  |  |  | 注意我们将代码分成了`hello_macro_derive` 和 `impl_hello_macro` 两个函数,前者负责解析 `TokenStream`,后者负责转换语法树:这使得编写过程宏更方便。几乎你看到或者创建的每一个过程宏的外部函数(这里是`hello_macro_derive`)中的代码都跟这里是一样的。你放入内部函数(这里是`impl_hello_macro`)中的代码根据你的过程宏的设计目的会有所不同。 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 现在,我们已经引入了三个新的 crate:`proc_macro` 、 [`syn`] 和 [`quote`] 。Rust 自带 `proc_macro` crate,因此无需将其加到 *Cargo.toml* 文件的依赖中。`proc_macro` crate 是编译器用来读取和操作我们 Rust 代码的 API。 |  |  |  | 现在,我们已经引入了三个新的 crate:`proc_macro` 、 [`syn`] 和 [`quote`] 。Rust 自带 `proc_macro` crate,因此无需将其加到 *Cargo.toml* 文件的依赖中。`proc_macro` crate 是编译器用来读取和操作我们 Rust 代码的 API。 | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | 
 |